{"$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":"D7","name":"Architectural Integrity","shortDescription":{"text":"Architectural Integrity"},"helpUri":"https://codehealth.canine.dev/dimensions/D7"},{"id":"D8","name":"Code Coverage","shortDescription":{"text":"Code Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/D8"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"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":"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":"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":"D20","name":"ADR Quality","shortDescription":{"text":"ADR Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D20"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D22","name":"Internal API Consistency","shortDescription":{"text":"Internal API Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D22"},{"id":"D23","name":"Boundary Type-Coupling","shortDescription":{"text":"Boundary Type-Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D23"},{"id":"D24","name":"Comment Value","shortDescription":{"text":"Comment Value"},"helpUri":"https://codehealth.canine.dev/dimensions/D24"},{"id":"D25","name":"ADR Conformance","shortDescription":{"text":"ADR Conformance"},"helpUri":"https://codehealth.canine.dev/dimensions/D25"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D31","name":"IaC \u0026 Container Security","shortDescription":{"text":"IaC \u0026 Container Security"},"helpUri":"https://codehealth.canine.dev/dimensions/D31","relationships":[{"target":{"id":"CWE-1032","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-16","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1032","CWE-732","CWE-16"]}},{"id":"D33","name":"JS/npm Dependency Vulnerabilities","shortDescription":{"text":"JS/npm Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D33","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}},{"id":"D38","name":"OSV Dependency Vulnerabilities","shortDescription":{"text":"OSV Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D38","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D40","name":"Network Egress Confinement","shortDescription":{"text":"Network Egress Confinement"},"helpUri":"https://codehealth.canine.dev/dimensions/D40"},{"id":"D41","name":"Kernel \u0026 Syscall Confinement","shortDescription":{"text":"Kernel \u0026 Syscall Confinement"},"helpUri":"https://codehealth.canine.dev/dimensions/D41"}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"ObjectConverter.ConvertTo (cyclomatic 73): ObjectConverter.ConvertTo has cyclomatic complexity 73 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Expressions/Helpers/ObjectConverter.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2ef91a633a4c504e3fcba869a4fbece0fcf81e2a2a54f3b3e3f726f295b9912"}},{"ruleId":"D1","level":"warning","message":{"text":"WorkflowInstanceFilter.Apply (cyclomatic 44): WorkflowInstanceFilter.Apply has cyclomatic complexity 44 (threshold 15). Of this number, 43 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aab4e2e54bac71a658ed5c25218e00a047dad4792bfc011aa319d2e4c2f9013"}},{"ruleId":"D1","level":"warning","message":{"text":"AIOrchestrator.ExecuteChatAsync (cyclomatic 44): AIOrchestrator.ExecuteChatAsync has cyclomatic complexity 44 (threshold 15). Of this number, 43 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.AI.Host/Services/AIOrchestrator.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"3402f178b93661596de2716bf5384c1d43976fc80b82395803bf513e5e0e11f2"}},{"ruleId":"D1","level":"warning","message":{"text":"ObjectConverter.ConvertTo (cyclomatic 42): ObjectConverter.ConvertTo has cyclomatic complexity 42 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/clients/Elsa.Api.Client/Extensions/ObjectConverter.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"b666973aa29605a830002daa348706704dd91ddc3cd629a5172574a3915e6cd3"}},{"ruleId":"D1","level":"warning","message":{"text":"Flowchart.OnChildCompletedTokenBasedLogicAsync (cyclomatic 32): Flowchart.OnChildCompletedTokenBasedLogicAsync has cyclomatic complexity 32 (threshold 15). Of this number, 19 points are the body\u0027s own statements and 13 belong to 6 function literals inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Activities/Flowchart/Activities/Flowchart.Tokens.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"66112ed53fe848d75ddfa0cc96a5cf4f0d7e043140f4f11f2f18c6864177d886"}},{"ruleId":"D1","level":"warning","message":{"text":"ActivityExecutionRecordFilter.Apply (cyclomatic 32): ActivityExecutionRecordFilter.Apply has cyclomatic complexity 32 (threshold 15). Of this number, 29 points are the body\u0027s own statements and 3 belong to 3 function literals inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Filters/ActivityExecutionRecordFilter.cs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a3a47c8b056013f500be985bfa3a9496e3ef2c394312fcf5f15ba7ff4555522"}},{"ruleId":"D1","level":"warning","message":{"text":"PolymorphicObjectConverter.Read (cyclomatic 29): PolymorphicObjectConverter.Read has cyclomatic complexity 29 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverter.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef9e07333d4cf8ff2b850cf5cc5566596de5adc335c4e365fae36718208ef28a"}},{"ruleId":"D1","level":"warning","message":{"text":"PolymorphicObjectConverter.Write (cyclomatic 29): PolymorphicObjectConverter.Write has cyclomatic complexity 29 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverter.cs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4eeab9324cfc526f64ed1a2ed3b971e1fe692bd9af863dea18b9d2ebc38dff5"}},{"ruleId":"D1","level":"warning","message":{"text":"FlowchartJsonConverter.DeserializeConnections (cyclomatic 23): FlowchartJsonConverter.DeserializeConnections has cyclomatic complexity 23 (threshold 15). Of this number, 21 points are the body\u0027s own statements and 2 belong to one function literal inside it that branches. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/FlowchartJsonConverter.cs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa01bb4f3e94808ace386145a92ead0dfb956a485f38c552cd449091ba75ef3"}},{"ruleId":"D1","level":"warning","message":{"text":"TenantTaskLifecycleCoordinator.StopTenantCoreAsync (cyclomatic 20): TenantTaskLifecycleCoordinator.StopTenantCoreAsync has cyclomatic complexity 20 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Common/Multitenancy/Implementations/TenantTaskLifecycleCoordinator.cs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e5e6f6f6ea516e2b8a04f4a2979ddbf468c906900d8ec5e820d67ea6c75262c"}},{"ruleId":"D1","level":"warning","message":{"text":"EFCoreWorkflowDefinitionStore.Filter (cyclomatic 18): EFCoreWorkflowDefinitionStore.Filter has cyclomatic complexity 18 (threshold 15). Of this number, 14 points are the body\u0027s own statements and 4 belong to 2 function literals inside it that branch. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore/Modules/Management/WorkflowDefinitionStore.cs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"efbc50aebfcbf55aa7095a04714673ebe3f8c6edcaf47641e1f3ae472c69c749"}},{"ruleId":"D1","level":"warning","message":{"text":"StructuredLogFilterEvaluator.Matches (cyclomatic 18): StructuredLogFilterEvaluator.Matches has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Diagnostics.StructuredLogs/Services/StructuredLogFilterEvaluator.cs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"857deced6e7d37e261d06cd54435f6e0834a61a6a83321c2f581825c2e464c5b"}},{"ruleId":"D1","level":"warning","message":{"text":"OpenTelemetrySubscriber.MatchesTrace (cyclomatic 18): OpenTelemetrySubscriber.MatchesTrace has cyclomatic complexity 18 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Diagnostics.OpenTelemetry/Providers/InMemory/InMemoryOpenTelemetryLiveFeed.cs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"564753d12d0bcd58e29be5a47e8222bb6a20704fad817ead9d7f6e8976d2e2aa"}},{"ruleId":"D1","level":"warning","message":{"text":"FlowchartJsonConverter.Read (cyclomatic 17): FlowchartJsonConverter.Read has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/FlowchartJsonConverter.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f646b0844d100cbca614c38a1e8a88315c74ab55ce27439ad84c1a63150a60c"}},{"ruleId":"D1","level":"warning","message":{"text":"ElsaScriptParser.ElsaScriptParser.ctor (cyclomatic 17): ElsaScriptParser.ElsaScriptParser.ctor has cyclomatic complexity 17 (threshold 15). Most of this is not in the body itself: 1 of the 17 points is its own statement and the rest belongs to 7 function literals inside it that branch (lines 374, 463, 156, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Dsl.ElsaScript/Parser/ElsaScriptParser.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a422b2f50738a1d5972223fa505316dbef6b8b6779b8563ef2c44b83d212427"}},{"ruleId":"D1","level":"warning","message":{"text":"OpenTelemetrySubscriber.MatchesMetricPoint (cyclomatic 17): OpenTelemetrySubscriber.MatchesMetricPoint has cyclomatic complexity 17 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Diagnostics.OpenTelemetry/Providers/InMemory/InMemoryOpenTelemetryLiveFeed.cs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f58aad893809ff8e7fe7c6d83249ee137c6ac260b23b59ec46d73cb8020e0b"}},{"ruleId":"D1","level":"warning","message":{"text":"ExpandoObjectConverter.Read (cyclomatic 16): ExpandoObjectConverter.Read has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Converters/ExpandoObjectConverter.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ff5e33f5421cdb758fec56d838ad50974217ca1646e756d3aecb7f077c422df"}},{"ruleId":"D1","level":"warning","message":{"text":"WorkflowDefinitionFilter.Apply (cyclomatic 16): WorkflowDefinitionFilter.Apply has cyclomatic complexity 16 (threshold 15). Of this number, 13 points are the body\u0027s own statements and 3 belong to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Filters/WorkflowDefinitionFilter.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f3e6ae8efef2c21fffe34ffb97d6af99b4c4c250e8f1236e63198e4d1f1961f"}},{"ruleId":"D1","level":"warning","message":{"text":"ElsaWorkflowPersistenceHealthCheck.CheckHealthAsync (cyclomatic 16): ElsaWorkflowPersistenceHealthCheck.CheckHealthAsync has cyclomatic complexity 16 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/HealthChecks/ElsaWorkflowPersistenceHealthCheck.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"5855ab58a642f2da32368631b8695a8e7e4cb09bad520cc2a0426a6b646ad064"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultWorkflowDefinitionStorePopulator.AddOrUpdateCoreAsync (cyclomatic 16): DefaultWorkflowDefinitionStorePopulator.AddOrUpdateCoreAsync has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Services/DefaultWorkflowDefinitionStorePopulator.cs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"58055e324c81055ffbc509f0bcb792d1185e23a9a6432bb026eac5300676edf8"}},{"ruleId":"D1","level":"warning","message":{"text":"OpenTelemetrySubscriber.MatchesLog (cyclomatic 16): OpenTelemetrySubscriber.MatchesLog has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Diagnostics.OpenTelemetry/Providers/InMemory/InMemoryOpenTelemetryLiveFeed.cs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eca520bb6ed5a535770e2d25187f11f06921e5765d29be87ad7929544bdb0ec"}},{"ruleId":"D2","level":"warning","message":{"text":"ObjectConverter.ConvertTo (cognitive 103): ObjectConverter.ConvertTo has cognitive complexity 103 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Expressions/Helpers/ObjectConverter.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d56e59d21cf07032e36faf7e02b7e9777bb248ea1c0c5ac352185b6b0a3c361"}},{"ruleId":"D2","level":"warning","message":{"text":"AIOrchestrator.ExecuteChatAsync (cognitive 81): AIOrchestrator.ExecuteChatAsync has cognitive complexity 81 (threshold 15). Of this number, 80 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.AI.Host/Services/AIOrchestrator.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed99bc4a2d1cb800a1dc80c6ffa1f92b1117e7a6528357861a1a57c748fcb10e"}},{"ruleId":"D2","level":"warning","message":{"text":"ObjectConverter.ConvertTo (cognitive 59): ObjectConverter.ConvertTo has cognitive complexity 59 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/clients/Elsa.Api.Client/Extensions/ObjectConverter.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"a77e6c8fadcf8616992650302eefc13892da5c242efe8cd5be70e640e9903344"}},{"ruleId":"D2","level":"warning","message":{"text":"Flowchart.OnChildCompletedTokenBasedLogicAsync (cognitive 43): Flowchart.OnChildCompletedTokenBasedLogicAsync has cognitive complexity 43 (threshold 15). Of this number, 37 points are the body\u0027s own statements and 6 belong to 6 function literals inside it that branch. To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Activities/Flowchart/Activities/Flowchart.Tokens.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"27804f23e74728fa888516bf317cfc885f846edf47bac967d15cbc5d9e5b6377"}},{"ruleId":"D2","level":"warning","message":{"text":"JsonActivityConstructorContextHelper.StripTypeMetadata (cognitive 35): JsonActivityConstructorContextHelper.StripTypeMetadata has cognitive complexity 35 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Models/ActivityConstructorContext.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d1a3312de035b2639f76c0d582eae0f068257ddd6a698e8bce138323d4c9243"}},{"ruleId":"D2","level":"warning","message":{"text":"PolymorphicObjectConverter.Read (cognitive 34): PolymorphicObjectConverter.Read has cognitive complexity 34 (threshold 15). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverter.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"d119fa395a25e27ec3e034c71b792e0c846af077b89ca29f6163ced5682da1e2"}},{"ruleId":"D2","level":"warning","message":{"text":"ActivityExecutionRecordFilter.Apply (cognitive 32): ActivityExecutionRecordFilter.Apply has cognitive complexity 32 (threshold 15). Of this number, 29 points are the body\u0027s own statements and 3 belong to 3 function literals inside it that branch. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Filters/ActivityExecutionRecordFilter.cs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"a149e23efebcd8c177f63672745ea26521f31b8867264e722777320e9a20c74e"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkflowInstanceFilter.Apply (cognitive 31): WorkflowInstanceFilter.Apply has cognitive complexity 31 (threshold 15). Of this number, 30 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"c12db145edc51cd16be3932eef9d87f4152a40e60854e114021d0d1fbf8abc0a"}},{"ruleId":"D2","level":"warning","message":{"text":"ActivityWriter.WriteActivity (cognitive 30): ActivityWriter.WriteActivity has cognitive complexity 30 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Helpers/ActivityWriter.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"7631a2a4593af7ebde591640ce41c0d22afebbe8786b38b66bd1f4c0546d606e"}},{"ruleId":"D2","level":"warning","message":{"text":"TenantTaskLifecycleCoordinator.StopTenantCoreAsync (cognitive 30): TenantTaskLifecycleCoordinator.StopTenantCoreAsync has cognitive complexity 30 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Common/Multitenancy/Implementations/TenantTaskLifecycleCoordinator.cs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"792893e5a1cb1d5e2b69d3398c8f8bc863583623bb65931df554ca430cb45b30"}},{"ruleId":"D2","level":"warning","message":{"text":"DistributedRuntimeLockProviderValidator.GetInnerProviders (cognitive 28): DistributedRuntimeLockProviderValidator.GetInnerProviders has cognitive complexity 28 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime.Distributed/Services/DistributedRuntimeLockProviderValidator.cs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"55e66414027db4e26f34973a473d8f436f6b311a2dc5c950a61af206d1a9a580"}},{"ruleId":"D2","level":"warning","message":{"text":"ScheduledCronTask.SetupTimer (cognitive 25): ScheduledCronTask.SetupTimer has cognitive complexity 25 (threshold 15). Most of this is not in the body itself: 0 of the 25 points are its own statements and the rest belongs to one function literal inside it that branches (line 106). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Scheduling/ScheduledTasks/ScheduledCronTask.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"53ed8a413d3495bd0e9bf9dad0a37e4d917e655511171b2f1c91aa7c4a7e6b49"}},{"ruleId":"D2","level":"warning","message":{"text":"PolymorphicObjectConverter.ReadObject (cognitive 24): PolymorphicObjectConverter.ReadObject has cognitive complexity 24 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverter.cs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"39913e4dff6ac6803ffcc10a322cb46b0e21a38b6cec8b2f1f8795de26f133a5"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkflowRunner.RunAsync (cognitive 24): WorkflowRunner.RunAsync has cognitive complexity 24 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Services/WorkflowRunner.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dda75ccbe29ae82f87931a49464949a7bfe3e62637d4bb4d468ee4462a006bd"}},{"ruleId":"D2","level":"warning","message":{"text":"FlowchartJsonConverter.DeserializeConnections (cognitive 23): FlowchartJsonConverter.DeserializeConnections has cognitive complexity 23 (threshold 15). Of this number, 22 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/FlowchartJsonConverter.cs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fb348eb58fd47b0d69e4cf69a73de692d592aa5f629c0b4a1cacfd9cb58df12"}},{"ruleId":"D2","level":"warning","message":{"text":"ItemSourceActivityExecutionContextExtensions.GetItemSource (cognitive 23): ItemSourceActivityExecutionContextExtensions.GetItemSource has cognitive complexity 23 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Extensions/ItemSourceActivityExecutionContextExtensions.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"09d1b741fa23429508c6b8e260872b84e97c1af362e39e536995c2da666cf1ef"}},{"ruleId":"D2","level":"warning","message":{"text":"VariablePersistenceManager.LoadVariablesAsync (cognitive 23): VariablePersistenceManager.LoadVariablesAsync has cognitive complexity 23 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Services/VariablePersistenceManager.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"f51b8cc508059ce25af4606bdbe9257938d7799916b7b004fede119d26fde6e9"}},{"ruleId":"D2","level":"warning","message":{"text":"BackgroundActivityInvokerMiddleware.CompleteBackgroundActivityScheduledActivitiesAsync (cognitive 22): BackgroundActivityInvokerMiddleware.CompleteBackgroundActivityScheduledActivitiesAsync has cognitive complexity 22 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Middleware/Activities/BackgroundActivityInvokerMiddleware.cs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c595dbbad659334077ef1a739d38d14124f98b1f4eb4364b3d5721e303b611b"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultWorkflowDefinitionStorePopulator.AddOrUpdateCoreAsync (cognitive 22): DefaultWorkflowDefinitionStorePopulator.AddOrUpdateCoreAsync has cognitive complexity 22 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Services/DefaultWorkflowDefinitionStorePopulator.cs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc3728084e2a9a218624433252cb0396b23206df0b4a7a96eb3dbeff425b544f"}},{"ruleId":"D2","level":"warning","message":{"text":"VersionOptions.ToString (cognitive 21): VersionOptions.ToString has cognitive complexity 21 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Common/Models/VersionOptions.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"7985fd65e789ccfa8128da7a636784af23b1be3432508bf6596c698d54446280"}},{"ruleId":"D2","level":"warning","message":{"text":"VersionOptions.ToString (cognitive 21): VersionOptions.ToString has cognitive complexity 21 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/clients/Elsa.Api.Client/Shared/Models/VersionOptions.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b561681ea6436dc4f07e1ca89d43c85768c9f94ba0feb7640c111c9d9474b67"}},{"ruleId":"D2","level":"warning","message":{"text":"PolymorphicObjectConverter.ReadType (cognitive 20): PolymorphicObjectConverter.ReadType has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverter.cs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b539d04ffe38cb86b4a3ffe63139e6eef32fcc240cf622b5a6ef120f6bcc6e4"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkflowReferenceUpdater.UpdateWorkflowReferencesAsync (cognitive 20): WorkflowReferenceUpdater.UpdateWorkflowReferencesAsync has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Services/WorkflowReferenceUpdater.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fcd6f13f0404b55b4a5304503745a773dd18a9e2280c9a7f88f428aa1cc6394"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpEndpoint.HandleRequestAsync (cognitive 20): HttpEndpoint.HandleRequestAsync has cognitive complexity 20 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Http/Activities/HttpEndpoint.cs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec38fe81fc5c3659727d625beb30314d3aa83135c6bed07f5b31afa437421e57"}},{"ruleId":"D2","level":"warning","message":{"text":"PolymorphicObjectConverter.Write (cognitive 19): PolymorphicObjectConverter.Write has cognitive complexity 19 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverter.cs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1e466ccbd0d4e56607848b3acaee9660de1c0b2ec5fa361b80182f4f06a1f25"}},{"ruleId":"D2","level":"warning","message":{"text":"FlowGraph.GetForwardConnections (cognitive 18): FlowGraph.GetForwardConnections has cognitive complexity 18 (threshold 15). Of this number, 17 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Activities/Flowchart/Models/FlowGraph.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f6a76ebfc3e65d6590f253a3a84f74baf28b3a54369d92875513cbebfc5025"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpandoObjectConverter.Read (cognitive 17): ExpandoObjectConverter.Read has cognitive complexity 17 (threshold 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Converters/ExpandoObjectConverter.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"f73eabc613aadb8bc33bfeb35f7ce711f8241b36a2914aee5c3d8f9d7db72939"}},{"ruleId":"D2","level":"warning","message":{"text":"InputJsonConverter.Read (cognitive 17): InputJsonConverter.Read has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Converters/InputJsonConverter.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"653d66e4951b54ac2704000585ccf0eff36fdabcb1a3676df675a386cd1bff3f"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeExtensions.FindIEnumerable (cognitive 17): TypeExtensions.FindIEnumerable has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Expressions/Extensions/TypeExtensions.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"9187a61fc09bb32584bea6b80f4d539dc1663c3bea659e510f8611892d45a5cf"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeExtensions.FindIEnumerable (cognitive 17): TypeExtensions.FindIEnumerable has cognitive complexity 17 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/clients/Elsa.Api.Client/Extensions/TypeExtensions.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"26617877ac1a8de6039831972a96125cf9fb9950997f9030e5ceb69ae224455b"}},{"ruleId":"D2","level":"warning","message":{"text":"StructuredLogFilterEvaluator.Matches (cognitive 17): StructuredLogFilterEvaluator.Matches has cognitive complexity 17 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Diagnostics.StructuredLogs/Services/StructuredLogFilterEvaluator.cs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"cafe493013b3acd4973900df22108c2406f7fc12ed256ca451de0e2f1f874266"}},{"ruleId":"D2","level":"warning","message":{"text":"FlowchartJsonConverter.Read (cognitive 16): FlowchartJsonConverter.Read has cognitive complexity 16 (threshold 15). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/FlowchartJsonConverter.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"c86fdb7fa4ef618f45a939a29bc67fcb87eb29b8e2cca603ed3431ab6d9c5bf0"}},{"ruleId":"D2","level":"warning","message":{"text":"BookmarkFilter.GetHashableString (cognitive 16): BookmarkFilter.GetHashableString has cognitive complexity 16 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Filters/BookmarkFilter.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b45046f115276bb9cb27889860a8e70b61ac0592d60167338524351f66bd68c"}},{"ruleId":"D2","level":"warning","message":{"text":"BulkUpsertExtensions.GenerateSqlServerUpsert (cognitive 16): BulkUpsertExtensions.GenerateSqlServerUpsert has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore.Common/Extensions/BulkUpsertExtensions.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b60d809b0760bb8ba5b1d9f678a13a229dfdbda8b57a2c59d033ba050763af5"}},{"ruleId":"D2","level":"warning","message":{"text":"BulkUpsertExtensions.GeneratePostgresUpsert (cognitive 16): BulkUpsertExtensions.GeneratePostgresUpsert has cognitive complexity 16 (threshold 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore.Common/Extensions/BulkUpsertExtensions.cs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6b5c9ad989940c296e10669bb1736978d755713350ed54295f6611f3c1a11b8"}},{"ruleId":"D2","level":"warning","message":{"text":"EFCoreWorkflowDefinitionStore.Filter (cognitive 16): EFCoreWorkflowDefinitionStore.Filter has cognitive complexity 16 (threshold 15). Of this number, 14 points are the body\u0027s own statements and 2 belong to 2 function literals inside it that branch. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore/Modules/Management/WorkflowDefinitionStore.cs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"64c707af5454b31523fe01bd4eb7f24961a318cacd0f9f957fc8187ef9b50f3d"}},{"ruleId":"D2","level":"warning","message":{"text":"OpenTelemetrySubscriber.MatchesTrace (cognitive 16): OpenTelemetrySubscriber.MatchesTrace has cognitive complexity 16 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Diagnostics.OpenTelemetry/Providers/InMemory/InMemoryOpenTelemetryLiveFeed.cs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"e410d2c1c39e5331b44c8a62658b22544b643606a1bed31edd915fb9ba9d7428"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ActivityExecutionContext: TooManyMethods \u2014 367 significant lines (blank, comment-only and punctuation-only lines excluded), 59 methods, declared across 4 files: Contexts/ActivityExecutionContext.cs (52), Contexts/ActivityExecutionContext.Cancel.cs (3), Contexts/ActivityExecutionContext.Complete.cs (3), Contexts/ActivityExecutionContext.ExecutionLogEntry.cs (1). To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contexts/ActivityExecutionContext.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b17c6052e533134785bc7bbe2c68b01ebdeac1b50e52a02cf6d5cdb1f35eba08"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WorkflowExecutionContext: TooManyMethods \u2014 360 significant lines (blank, comment-only and punctuation-only lines excluded), 50 methods, declared across 3 files: Contexts/WorkflowExecutionContext.cs (47), Contexts/WorkflowExecutionContext.Cancel.cs (2), Contexts/WorkflowExecutionContext.ExecutionLogEntry.cs (1). To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contexts/WorkflowExecutionContext.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c4898cd9b305ba6a1beba3d536e40c467d1bd7324e8d3148c91ba350c8d8244"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Store: TooManyMethods \u2014 270 significant lines (blank, comment-only and punctuation-only lines excluded), 45 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore.Common/Store.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8309846638f2998e9e0b082e85692a5e6ca27534df78a4172ad16fa8e3807286"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AIOrchestrator: TooManyMethods \u2014 473 significant lines (blank, comment-only and punctuation-only lines excluded), 34 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.AI.Host/Services/AIOrchestrator.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0caa6a03f6bec87da3e8253f478652578d82322a3ca1ab75799dea0ef30268e7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Flowchart: TooManyMethods \u2014 345 significant lines (blank, comment-only and punctuation-only lines excluded), 32 methods, declared across 3 files: Activities/Flowchart.Counters.cs (19), Activities/Flowchart.cs (10), Activities/Flowchart.Tokens.cs (3). To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Activities/Flowchart/Activities/Flowchart.Counters.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d4b4070b001e7e2e7bf442b25a4145fd1776aed8fc2bc826bb6acf83c55091b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): src/modules/Elsa.Workflows.Core/Activities/Flowchart/Activities/Flowchart.Tokens.cs:102-129 | src/modules/Elsa.Workflows.Core/Activities/Flowchart/Activities/Flowchart.Tokens.cs:140-167 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Workflows.Core/Activities/Flowchart/Activities/Flowchart.Tokens.cs:102\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. 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/modules/Elsa.Workflows.Core/Activities/Flowchart/Activities/Flowchart.Tokens.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3d134a6e2064c9ee7d248124340d4c46ba995c680adb7529e7f9d7c8a9038d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Version/Delete.cs:29-47 | src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Version/Revert.cs:26-44 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/Version/Delete.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"95ba5617dacb5cef2b4394b0b7bbbd01476eaddd0a457bc04daa009099b6838d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/modules/Elsa.Workflows.Core/Models/ActivityConstructorContext.cs:86-106 | src/modules/Elsa.Workflows.Core/Models/ActivityConstructorContext.cs:118-135 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Models/ActivityConstructorContext.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"07f2f591dec3bb428f9e0e063a60a7d0ed03e2461dcb074245c7e184acab5529"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): src/modules/Elsa.Workflows.Core/Pipelines/MiddlewareHelpers.cs:12-28 | src/common/Elsa.Mediator/Middleware/MiddlewareHelpers.cs:21-37 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Workflows.Core/Pipelines/MiddlewareHelpers.cs:12\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Pipelines/MiddlewareHelpers.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"c24d67dd2e8f3b6e1527c910289762f4c5a32751539b98e59be9379d558f84fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/modules/Elsa.Expressions/Extensions/TypeExtensions.cs:49-64 | src/clients/Elsa.Api.Client/Extensions/TypeExtensions.cs:57-72 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Expressions/Extensions/TypeExtensions.cs:49\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Expressions/Extensions/TypeExtensions.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"e53c537b06f8659e6af025d5965c929cb0ae7d487247219319e724e007e1193b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/modules/Elsa.Identity/Endpoints/Roles/Delete/Endpoint.cs:22-40 | src/modules/Elsa.Identity/Endpoints/Users/Delete/Endpoint.cs:22-36 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Identity/Endpoints/Roles/Delete/Endpoint.cs:22\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Identity/Endpoints/Roles/Delete/Endpoint.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fe079bc702dbb85fba541fe363e4c2a42b90dc998568fd50a6196bec695f5b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/modules/Elsa.Scheduling/ScheduledTasks/ScheduledCronTask.cs:133-148 | src/modules/Elsa.Scheduling/ScheduledTasks/ScheduledRecurringTask.cs:113-127 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Scheduling/ScheduledTasks/ScheduledCronTask.cs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f68822263b7f13a5c872e31ee07fed861cf932a154910a14d73a23f48194013"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): src/common/Elsa.Testing.Shared/UnicodeRangeGenerator.cs:14-29 | src/common/Elsa.Testing.Shared/UnicodeRangeGenerator.cs:30-43 | src/common/Elsa.Testing.Shared/UnicodeRangeGenerator.cs:44-57 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/Elsa.Testing.Shared/UnicodeRangeGenerator.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"20109fb49a6f4684c56e07237adf2d182746609a77917c90ccfcb21c461818ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/modules/Elsa.Dsl.ElsaScript/Parser/ElsaScriptParser.cs:200-213 | src/modules/Elsa.Dsl.ElsaScript/Parser/ElsaScriptParser.cs:257-270 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Dsl.ElsaScript/Parser/ElsaScriptParser.cs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b9a87abbcdaf08285d0ac8d20a4b5afdafe3b58860ebad5edcfb19c2c0a3b3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/modules/Elsa.Workflows.Runtime/Features/WorkflowRuntimeFeature.cs:460-472 | src/modules/Elsa.Workflows.Runtime/ShellFeatures/WorkflowRuntimeFeature.cs:378-390 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Workflows.Runtime/Features/WorkflowRuntimeFeature.cs:460\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. 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/modules/Elsa.Workflows.Runtime/Features/WorkflowRuntimeFeature.cs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"4568ab4b77e537610e313b90600b1c55d30494507731293ea2fc4814b97bca8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/modules/Elsa.Workflows.Runtime/Handlers/ResumeDispatchWorkflowActivity.cs:19-31 | src/modules/Elsa.Workflows.Runtime/Handlers/ResumeExecuteWorkflowActivity.cs:19-31 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Workflows.Runtime/Handlers/ResumeDispatchWorkflowActivity.cs:19\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. 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/modules/Elsa.Workflows.Runtime/Handlers/ResumeDispatchWorkflowActivity.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c901f054bae228cc11ca0575926571fd6e97021ef3020c664a08d5721592276"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/modules/Elsa.Workflows.Runtime/Services/ObsoleteWorkflowRuntime.cs:74-85 | src/modules/Elsa.Workflows.Runtime/Services/ObsoleteWorkflowRuntime.cs:117-128 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Workflows.Runtime/Services/ObsoleteWorkflowRuntime.cs:74\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Services/ObsoleteWorkflowRuntime.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce75860a89c12360231e541474ddd1fdd74d1e6aab2f10438e84c0d6e1a8e7bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): src/modules/Elsa.Persistence.EFCore.Common/Extensions/BulkUpsertExtensions.cs:159-169 | src/modules/Elsa.Persistence.EFCore.Common/Extensions/BulkUpsertExtensions.cs:221-231 | src/modules/Elsa.Persistence.EFCore.Common/Extensions/BulkUpsertExtensions.cs:291-301 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Persistence.EFCore.Common/Extensions/BulkUpsertExtensions.cs:159\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore.Common/Extensions/BulkUpsertExtensions.cs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4884cff9886da7b35e1fd398cb28b49d8027b0f5eba3d55347cbad4272da887"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/modules/Elsa.Http/Activities/DownloadHttpFile.cs:246-256 | src/modules/Elsa.Http/Activities/SendHttpRequestBase.cs:257-267 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Http/Activities/DownloadHttpFile.cs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"003ac00e23157506b4e91a92545b9399f5d1b4b81227d4de9a987a23095501cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/modules/Elsa.Expressions.CSharp/Handlers/GenerateArgumentAccessors.cs:37-46 | src/modules/Elsa.Expressions.CSharp/Handlers/GenerateWorkflowInputAccessors.cs:43-52 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Expressions.CSharp/Handlers/GenerateArgumentAccessors.cs:37\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Expressions.CSharp/Handlers/GenerateArgumentAccessors.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"88c80b45cb323f6aa55e92378a4de232199d049591c45060102ea5eaf0a02e85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionExporter.cs:112-120 | src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionExporter.cs:126-134 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionExporter.cs:112\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionExporter.cs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6a295a9c2eb67b660ada6151082a075562368df5f5c21dfdb63fe5bb81b186c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/modules/Elsa.Common/Extensions/TypeExtensions.cs:72-80 | src/clients/Elsa.Api.Client/Extensions/TypeExtensions.cs:79-87 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Common/Extensions/TypeExtensions.cs:72\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Common/Extensions/TypeExtensions.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"071b2cf369a7d249f70347265811713d05b9bf700dce5060e4e4d28410aa2c18"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/modules/Elsa.Diagnostics.OpenTelemetry/Ingestion/HttpProtobuf/OtlpHttpProtobufParser.cs:327-335 | src/modules/Elsa.Diagnostics.OpenTelemetry/Ingestion/HttpProtobuf/OtlpHttpProtobufParser.cs:364-372 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/modules/Elsa.Diagnostics.OpenTelemetry/Ingestion/HttpProtobuf/OtlpHttpProtobufParser.cs:327\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Diagnostics.OpenTelemetry/Ingestion/HttpProtobuf/OtlpHttpProtobufParser.cs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1514d4f92109b54c25228e201e0ece8d6e560757cf096a39dd593632ee4e6ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/Elsa.Api.Common/Extensions/WebApplicationExtensions.cs:158-164 | src/common/Elsa.Api.Common/FastEndpointConfigurators/ElsaFastEndpointsConfigurator.cs:32-38 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/common/Elsa.Api.Common/Extensions/WebApplicationExtensions.cs:158\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. 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/common/Elsa.Api.Common/Extensions/WebApplicationExtensions.cs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd94b60a33a72df57f0335f020b86e75f366d9ab3ba810710293c1a8b7794a22"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/common/Elsa.Api.Common/Extensions/WebApplicationExtensions.cs:168-174 | src/common/Elsa.Api.Common/FastEndpointConfigurators/ElsaFastEndpointsConfigurator.cs:42-48 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/common/Elsa.Api.Common/Extensions/WebApplicationExtensions.cs:168\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. 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/common/Elsa.Api.Common/Extensions/WebApplicationExtensions.cs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"acb8481e0a85aed24e65c05fb0e3598c42638d9808e2b6222ac921c043c98f0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/modules/Elsa.Http/Activities/DownloadHttpFile.cs:272-278 | src/modules/Elsa.Http/Activities/SendHttpRequestBase.cs:302-308 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Http/Activities/DownloadHttpFile.cs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"b87d58c60f840bec40614348236faeb614c931894218933428b6b9a76481b6b6"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Elsa.Api.Client(net8.0): Elsa.Api.Client(net8.0): abstractness 0.13, instability 0.00, distance 0.87 \u2014 zone of pain \u2014 concrete and depended on by 1 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"13fe6aa8018f73b1b2445c6a7605ac84a8b8b22dbf886db0dd19fb77b27331e7"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Elsa.Persistence.VNext(net8.0): Elsa.Persistence.VNext(net8.0): abstractness 0.17, instability 0.00, distance 0.83 \u2014 zone of pain \u2014 concrete and depended on by 8 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"973c86a826fec83153e654452a81f26abcb9f6c3736e5755f60e46f866dffe20"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Elsa.Expressions(net8.0): Elsa.Expressions(net8.0): abstractness 0.14, instability 0.11, distance 0.75 \u2014 zone of pain \u2014 concrete and depended on by 16 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f78e14567fde0faa0d34fe07c2b784862f1a0e798e4250f9b60e7620203535f2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WorkflowExecutionContext (LCOM4 5): WorkflowExecutionContext\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contexts/WorkflowExecutionContext.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5cd3f57d056de2da21b6dfa09e52df22167263f93a5ac4aa1751e630b938f11"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ObsoleteWorkflowRuntime (LCOM4 5): ObsoleteWorkflowRuntime\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Services/ObsoleteWorkflowRuntime.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"59173e0d1d02ba250f4838d7a4d857634d113213afe75f5a667e2dfa3a39d890"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: ValidateInstance_MatchesRequiredFieldsIgnoringCase: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"test/unit/Elsa.Persistence.VNext.UnitTests/RuntimeEntityDefinitionValidatorTests.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"5921df101fd2b009ad300e0d45e24e30a6e4b70b9a455e843e2caf01ca80e938"}},{"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":"7b57fdec9a34b8969a2cd3f5020c15dd451c5b99f348769e1b591bab35153fc1"},"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"}}]},{"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":"cf223f02c216002c6093aad264d6741771bdee1a2b50bf6e3b6ecc676fc924e1"},"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"}}]},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs: src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs changed 6 times in last 90 days, max complexity 44. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, behind tests written first."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Filters/WorkflowInstanceFilter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b3dcd7f6b0c2299f5abed5ca7fd7d36a4462b1324d7e08d2c9ab5df687c998"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/modules/Elsa.Workflows.Runtime/HealthChecks/ElsaWorkflowPersistenceHealthCheck.cs: src/modules/Elsa.Workflows.Runtime/HealthChecks/ElsaWorkflowPersistenceHealthCheck.cs changed 12 times in last 90 days, max complexity 16. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, behind tests written first."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/HealthChecks/ElsaWorkflowPersistenceHealthCheck.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"254bf13306b6ffd144f6056690f827edcfcd0bc9c8eeaed9e019c585fa9fd190"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverter.cs: src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverter.cs changed 3 times in last 90 days, max complexity 29. 1 of those changes was a fix/bug commit, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7f163c3a08ae94661a3d499b96e7476c2ad45520526c8ebf33de616f31b6ebc"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/FlowchartJsonConverter.cs: src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/FlowchartJsonConverter.cs changed 2 times in last 90 days, max complexity 23. 1 of those changes was a fix/bug commit, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/FlowchartJsonConverter.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc07cc0358112865228332145a949f80fc97f50c42bfeefd716c072d07d4932b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/modules/Elsa.Diagnostics.OpenTelemetry/Providers/InMemory/InMemoryOpenTelemetryLiveFeed.cs: src/modules/Elsa.Diagnostics.OpenTelemetry/Providers/InMemory/InMemoryOpenTelemetryLiveFeed.cs changed 2 times in last 90 days, max complexity 18. 2 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Diagnostics.OpenTelemetry/Providers/InMemory/InMemoryOpenTelemetryLiveFeed.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa47959f823657b6c04abd5e1b85159a69aa8152024179ac7245a3c70480a14e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/modules/Elsa.Persistence.EFCore/Modules/Management/WorkflowDefinitionStore.cs: src/modules/Elsa.Persistence.EFCore/Modules/Management/WorkflowDefinitionStore.cs changed 2 times in last 90 days, max complexity 18. 1 of those changes was a fix/bug commit, so the churn is repair rather than feature work. Before the next change lands here, cover the area it touches with tests, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore/Modules/Management/WorkflowDefinitionStore.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"57dd9f983985e86ac3bdb6802b4baec08b1bb8fba235620fdc258380f5394b59"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 106 significant file(s) lose their only recent owner: src/modules/Elsa.Workflows.Core/Contexts/WorkflowExecutionContext.cs, src/modules/Elsa.Workflows.Core/Extensions/ExpressionExecutionContextExtensions.cs, src/modules/Elsa.Http/Activities/HttpEndpoint.cs, src/modules/Elsa.Workflows.Core/Activities/Flowchart/Activities/Flowchart.Counters.cs, src/modules/Elsa.Http/Middleware/HttpWorkflowsMiddleware.cs, src/modules/Elsa.Workflows.Management/Features/WorkflowManagementFeature.cs, src/modules/Elsa.Persistence.EFCore/Modules/Management/WorkflowDefinitionStore.cs, src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Contracts/IWorkflowDefinitionsApi.cs (\u002B98 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6506ef2927bbe092c6d85fbb6dad2e5578ac88e0a5c24b0ee9293b0a847fd025"}},{"ruleId":"D16","level":"note","message":{"text":"Further sole-owners (lower concentration): 3 other contributor(s) are each the sole owner of a small amount of code below the off-boarding threshold \u2014 folded into the bus-factor score and metrics (111 single-owned of 534 analysed files in total, counted over production source files of roughly 100 lines or more, excluding tests, vendored, generated and example/demo trees, largest first). They are anonymized user #2 (2 file(s)), anonymized user #3 (2 file(s)), anonymized user #4 (1 file(s)) \u2014 spread or document their files in the same way, at lower priority than the named off-boarding risks above."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6eac528f2429e724e1a97ed868f79eefbcf1888dab4af9a9e673429369bb5b2f"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 10 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 10 warning codes (IL2026;IL2046;IL2057;IL2067;IL2070;IL2072;IL2075;IL2087;IL2091;IL2111) in one stroke \u2014 one team-wide decision, not 10 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"7042481b86041a63e8e0c2952faeaf8caaf47ced62c95dfafb57fffb3d43ae79"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/clients/Elsa.Api.Client/Shared/Models/Container.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9bbf3ae3ed1f663c5b788e861e948dcc1b412b9ccb74a9e652f349c08c0baea"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/State/PersistentVariableState.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdde5269f13de88046427dd19d72b2ecb6649d21ab041a376b5766801d4199c3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/clients/Elsa.Api.Client/Shared/Models/Container.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"22b68a30af309deb8716454d5a6836548388a88a2984610d8f7ca752ea5b0753"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/State/PersistentVariableState.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aefa8d977c183ead089edb75afb832cad1c21e54c5b8f29c337337ce2da0cc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Log notification. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/Elsa.Mediator/Middleware/Notification/Components/NotificationLoggingMiddleware.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"26d526a9eb24decd83599284e327796725cbdd1c351ea497f6ffe185bb95657e"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] RunActivityAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/Elsa.Testing.Shared.Integration/RunActivityExtensions.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd433fab41f8cc33400bd930b258adc4c6b6544ed4d3d4513d04982793efd450"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] RunActivityAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/common/Elsa.Testing.Shared.Integration/RunActivityExtensions.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d07a1aaab22efa912a928eb98b10f7ffa191cc70834eca69c2a289963c25f14"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Importing back into the workflow runtime makes sense, but this also causes another SAVE ction of the workflow instance in the DB, which also happens in the previous step during the commit action. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Alterations/Services/DefaultAlterationRunner.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"759a52ab287a364af5dc30ef78c4d92089dc400a99a7c473a4c57bff1f37a4bc"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable IL2055 \u2014 the disable has no matching restore, so it does not end with the construct that needed it: it runs to the end of the file and silences the rule for everything written below, including code added years later. Close it with the matching restore directive immediately after the construct it covers, or fix the cause and drop the directive entirely."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Common/Serialization/SerializationTypeResolver.cs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"559a6ced36c8b4e0d6480db1753ff5e063ac045f4bd5e794eba09dbea9a44e49"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] Get"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Expressions.CSharp/Models/OutputProxy.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba9490281a85659209791304b3b93f53f4735bddbabf9976b6f3ab7b7baf87f3"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] Get"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Expressions.CSharp/Models/OutputProxy.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"10ac89fa137d21884c0043f774f627d3efeda27b0bc886095d0855bcb3c76c3c"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable IL2070 \u2014 the disable has no matching restore, so it does not end with the construct that needed it: it runs to the end of the file and silences the rule for everything written below, including code added years later. Close it with the matching restore directive immediately after the construct it covers, or fix the cause and drop the directive entirely."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Expressions.JavaScript/TypeDefinitions/Services/TypeDescriber.cs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"f96982fbe75dd9cf48209d0e59ca9e1f44e884930f118728c19892950bb5c8f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add signal based cache invalidation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Expressions.Liquid/Services/LiquidTemplateManager.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"f04d1a4c1d729fe6addb10a96f32d5f144ba73ae2d32138a289a32aef740bf1e"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] EnableResiliency"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Http/Activities/SendHttpRequestBase.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b957c115f45bf66d4bfc329a77446a09efaedff6037e8c9e1a5cc27c69915fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Delete the cached file after the workflow completes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Http/Activities/WriteFileHttpResponse.cs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"382974f38d20f6302ca7213a43027642e188250d433dab94a2ec107bb0aa6c4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Uncomment the next two lines if we implement file caching for this handler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Http/DownloadableContentHandlers/UrlDownloadableContentHandler.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"651c8b2bf6b669148dbad26afdf6cb3b070de021f3d539dd7d03d3d078075343"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ApiRoutePrefix"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Http/Options/HttpActivityOptions.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d04eeb57bee93c4c5e89d531677a589173ea8266eb42dacfd1aff0463fe9e1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: found a library to use a Html Content Parser and use a complexe object Type, until this, this class allow to accept request send using text/html content-type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Http/Parsers/TextHtmlHttpContentParser.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"1118225ec0efe0285eaf9bf22973f08445237bd63eec41c5faa444ddd5179c5d"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] DisableLocalHostRequirement"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Identity/Features/DefaultAuthenticationFeature.cs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"88711dd6217396e8818fe0df57584e7568d15e62643aed3ac1997128de95cf7c"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Identity/Providers/AdminApiKeyProvider.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"510edf589c53973bf94734ad6845af2d425374b17dce28d66e6b8df9ba868177"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] .ctor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Identity/Providers/AdminUserProvider.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d05764c1a93c9b2bb64670a9e6830be37b22af1b7e27d3f3ae55db71b421937"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member \u2014 the disable has no matching restore, so it does not end with the construct that needed it: it runs to the end of the file and silences the rule for everything written below, including code added years later. Close it with the matching restore directive immediately after the construct it covers, or fix the cause and drop the directive entirely."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore.MySql/DbContextFactories.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b5cf023be47e1b99789f4a01909e0f6e69a8814e8d224648fb124d1db6fc9fb"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member \u2014 the disable has no matching restore, so it does not end with the construct that needed it: it runs to the end of the file and silences the rule for everything written below, including code added years later. Close it with the matching restore directive immediately after the construct it covers, or fix the cause and drop the directive entirely."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore.Oracle/DbContextFactories.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9c1ac303f5f39bc278e0f7012b63cc524291ca932200ab279df50488c907399"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member \u2014 the disable has no matching restore, so it does not end with the construct that needed it: it runs to the end of the file and silences the rule for everything written below, including code added years later. Close it with the matching restore directive immediately after the construct it covers, or fix the cause and drop the directive entirely."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore.PostgreSql/DbContextFactories.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee3a71208ef443745472bdcbb7366a4cd2807c29661569cd4bd02cc8e1d6fc7"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member \u2014 the disable has no matching restore, so it does not end with the construct that needed it: it runs to the end of the file and silences the rule for everything written below, including code added years later. Close it with the matching restore directive immediately after the construct it covers, or fix the cause and drop the directive entirely."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore.SqlServer/DbContextFactories.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc03f3e61bac47e0b45f4e861ccc3da6258875bb503a3cc63f05efb7c274e1ef"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CS1591 // Missing XML comment for publicly visible type or member \u2014 the disable has no matching restore, so it does not end with the construct that needed it: it runs to the end of the file and silences the rule for everything written below, including code added years later. Close it with the matching restore directive immediately after the construct it covers, or fix the cause and drop the directive entirely."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore.Sqlite/DbContextFactories.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b1a092b979625584daa1f071db55e238ca5cf65556a0b21d73db6ab829caccf"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] WorkflowInboxMessages"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Persistence.EFCore/Modules/Runtime/DbContext.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"00b60b108a05b8705d7fe3b22a2ccef3a31e0efbf3250c4fbe32543f8b2370ad"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block \u2014 the error is discarded with nothing recorded, so a failure here leaves no trace anywhere. Narrow the catch to the exception you actually expect, record it through whatever this codebase already uses to report problems, or \u2014 where swallowing really is correct, as it often is on a teardown/dispose path where throwing would mask the original failure \u2014 write down WHY in a comment on the catch. The comment has to give the reason: a note that only restates the swallow (\u0022ignored\u0022, \u0022do nothing\u0022) is read as no explanation at all and leaves this row in place. Any of the three makes the decision reviewable; all three clear this row."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.SasTokens/Contracts/DataProtectorTokenService.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"75c7c7528cef44bc341acd69a03535e1c7fe8a1d8dc99370637806d28cfe01f7"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] NotPublished"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Api/Endpoints/WorkflowDefinitions/BulkRetract/Models.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"136ffac91319f8d53b3927fa7be6c6f3ac95ad5cf94f3671194cfa0f89296e22"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] ObsoleteConnectionJsonConverter"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Activities/Flowchart/Serialization/ObsoleteConnectionJsonConverter.cs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfb3236df2f88b4e8812266ace314d48d88073187fc71b50389f8e34b75de7ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should be configurable, because this won\u0027t work for e.g. file streams and other non-serializable types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Activities/ParallelForEachT.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c8524bc01266cb7eb54d16553ae43040b66ce7eade34072b24acd592de4cbea"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] WithVariable"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Builders/WorkflowBuilder.cs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1dcb5e8f4c0efc93de46d349f0673e85d801a1f00c5e1471e7be97d29bc6e44"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] WithVariable"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Builders/WorkflowBuilder.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"6af5b97b68294858b82245146fe9e9fd4d6f54f2c110d98271a1b3157af9a642"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] WithVariable"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IWorkflowBuilder.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7367977b9e39ee0998800b999b542d473e1e56c142a001ca5f9d78fc6ed3338"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] WithVariable"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IWorkflowBuilder.cs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"4402c89c32f33c77f909a0d69bac1929af48e30880cb2eed1a0709cfaf08fe09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Check if we should not use the target subStatus here instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contexts/WorkflowExecutionContext.cs"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e98db184d9e8f27ac9b381bae96a088c5a631f78abeb5d0decce14078015ea"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] IActivityFactory"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IActivityFactory.cs"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f2b1314e5176607eb0b172cc0c1f877eb42653eb99843daab86f09ebb46125e"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ActivityFactoryExtensions"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IActivityFactory.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ebfb717f3cf7abd52dadec8fe050d4794474fbc5b87d615ed630fdc2e0b0df"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CreateActivity"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IActivityFactory.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f3fc29dcfb5213e8d6d48de970bc5887d4e6940fd081cd06999553ee36ea1cd"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SerializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/ISafeSerializer.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0451de39fc28cd4cffceb4345c701fee2b1a33ebb10ab6a72cda61fbab9018d"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SerializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IWorkflowStateSerializer.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"20bfd547aca53001fe34e04fc217486696e4cb4ebc73c0c226578245bf14f04f"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SerializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IWorkflowStateSerializer.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"04efc41b7845378836f717b9ca7f224d230a4686732c2af403c38e1758aa3c4b"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SerializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Serializers/JsonWorkflowStateSerializer.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b66653e978d9d4d8dca4820c491d7b43e56f125dde19d1c8c47e5a1d6c14573"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SerializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Serializers/JsonWorkflowStateSerializer.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e59c81a898d20c508b0a6e3045e8d1f212ba11a61f65b2207a42d6c43ed9ec9"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SerializeToElementAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/ISafeSerializer.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5caa776f429706574773ac82a0823ece26ae56464aeab9a1d12f8c3f431ed77"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SerializeToElementAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IWorkflowStateSerializer.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"c64d1cbf756385fdb7d55d6e33bb86e08195136921e52a62cf64f98c7e77732b"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SerializeToElementAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Serializers/JsonWorkflowStateSerializer.cs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8dd6e9c96666de3fd7c333f47b7b830af789e6fc09f12335d390bd781bea169"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] DeserializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/ISafeSerializer.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"8560d83a93f966d59b15adb965ccaeb76700e7401b38a757012978e89bc5ca5d"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] DeserializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/ISafeSerializer.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"99bd786b5f7b3e1ae3ad0bdc39acfc850358045039e32bcc6874d5247b9065cc"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] DeserializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IWorkflowStateSerializer.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd8aa4f548acca064d8626ee36ce9db33f80b081b935662a03d7bb2ffb86cd84"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] DeserializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IWorkflowStateSerializer.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed4908e1cf158f417185ed08554e548047bebc7e8eb889b8fa8ba9f2cdcc1f04"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] DeserializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IWorkflowStateSerializer.cs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"76c5d77bc8f55acf47a93624122a15d9150e8972e74ab94156c4012660a98df7"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] DeserializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Serializers/JsonWorkflowStateSerializer.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"90623f2ec917bdde9175061a2339702cb7847339b2abafb209d10208c95da853"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] DeserializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Serializers/JsonWorkflowStateSerializer.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"5db88c3ae6592453a2b1176e97d1b775084fb272b0c57284dd64bf3a6df0f663"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] DeserializeAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Serializers/JsonWorkflowStateSerializer.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6325d123c28547fc46f6878f850b1c23e5655c62de29c6c44dc16f23cb0bb2a"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] CustomProperties"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IWorkflowBuilder.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d261729e826e17d66ff15e269ca76d9e4f5c6e0dc25c5103e89611198052dad"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SerializeToUtfBytesAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Contracts/IWorkflowStateSerializer.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"56ea7140f013fb94ad314843c01c4a42dc762d23ae4945cc986b8dd619e52888"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SerializeToUtfBytesAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Serialization/Serializers/JsonWorkflowStateSerializer.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"e832a2e47226cc42c075131efa8f3703161c8908eca5a34154e1f137e102eb54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Disable filtering for now until we redesign log sanitization. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Extensions/ActivityExecutionContextExtensions.InputEvaluation.cs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3f70d1f35cf7226b7a5ed40b4ccdd5ebe488c66c8979ac582207aaaca4fc0b0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Services/PropertyOptionsResolver.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e4101e123c479c7cb9a6fb6b82a072f846d3c7c81344598716dd0124dc6c8fc"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Services/PropertyOptionsResolver.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6330b2099b2c812c450946c8d3f7e711e86ca98a3ead733ce9cc91a859579c6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Services/PropertyOptionsResolver.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec2c720ad5bb10642a2ce4c536c664de1e79f80a3ea214a0b74e39e6554f6f5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is a temporary solution. We need to find a better way to handle this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/Services/WorkflowStateExtractor.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7a410bdc3f842b29613731ced6850a2cbf0dfa468cb9a8daf4f5df400e56efa"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] WorkflowStorageDriver"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Core/VariableStorageDrivers/WorkflowStorageDriver.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"7edef8dd723b3e9f2e4e75f18402e2bd4bf0cdbfb779543031cde72e150bb349"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] New"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Contracts/IWorkflowDefinitionPublisher.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ceb85ef49758a1c4e922aeae3011e2ccda8e187c1daab9a4a993f7824817088"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The following code handles backward compatibility with variable definitions referencing older .NET type namespaces. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Mappers/VariableDefinitionMapper.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"1de21928249fc34f57ac81d1f29c38e0eacb0d6554258de74800fa7a7b6a780b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Remove this in the future when users have migrated workflows to use the new UsableAsActivity options property. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Mappers/WorkflowDefinitionMapper.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e2b42dd9ec1a43cc39bdf061d27b66ac608e383c04adf42962feb08bcb1d0f1"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CS0618 \u2014 the disable has no matching restore, so it does not end with the construct that needed it: it runs to the end of the file and silences the rule for everything written below, including code added years later. Close it with the matching restore directive immediately after the construct it covers, or fix the cause and drop the directive entirely."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Mappers/WorkflowDefinitionMapper.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fa7e2085bd1a79f27e5210b590895e56a618baf650d9a8c8722eff22de674c7"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] UsableAsActivity"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Models/WorkflowDefinitionModel.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"6afa687cd0e6cdce43ce8e991bae338f087721ecbf5fb0445b61443d3976363a"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] CreateJsonDescriptor"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Providers/DefaultExpressionDescriptorProvider.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"8855150711ac62928867dd88605ffc4907f2c0e48b16d2687b10b7060b54099b"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] BackgroundActivityBookmark"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Bookmarks/BackgroundActivityBookmark.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"9de24464f4b0a3ad17ad22a909c372bc50b371b4d0eea07c4c8d8ddb6de835d7"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] BulkDispatchWorkflowsBookmark"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Bookmarks/BulkDispatchWorkflowBookmark.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"79dd78a45dbd9747f04e3d8824a1138811c577bd1201dcec0389d27aaea862fc"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] DispatchWorkflowBookmark"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Bookmarks/DispatchWorkflowBookmark.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"0edaa98adaec65d61c5eb74aca2021182e0bac98b7601911c2715c867d322cc7"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] EventBookmarkPayload"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Bookmarks/EventBookmarkPayload.cs"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f5a24825b914fdb1114d026663d58becf0b025e9a0dbbb54542ef5878dbfcae"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] RunTaskBookmarkPayload"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Bookmarks/RunTaskBookmarkPayload.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf238f3579b50e6737f4d78d8b91636f1559f44688b1589ffe1fea544120bf6"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] IBookmarkBoundWorkflowService"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IBookmarkBoundWorkflowService.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"4382a10d96bf7d2de8db53039da5f4e030673317ea891cb95c3256fe3378e4ca"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] IBookmarkResumer"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IBookmarkResumer.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"af942c0dcf31991cc9b806e462fc9730e9779b32966e8a2022da4c99f641dc8f"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] IWorkflowHostFactory"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowHostFactory.cs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5e83b7d6bd032a986d6bf32a904292281f38915120362cc998503ff9951b23a"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] IWorkflowInbox"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowInbox.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce19f79961670b5a1e8533964898e93fa198817aa53842aed646cb4186299abf"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CanStartWorkflowAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d0650d6336b397ada8d1dcabb1108510dc2d24ec94021579fa7ffda69f0a0e3"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] StartWorkflowAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf8c1182f62e47ab7291cece679adc2304602869b8b9878eaa476e1b490c2dbf"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] StartWorkflowsAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"354d9ced0b62d94487574ae7169ecfc77ff4276129ca07ae1041efe1d1cbc455"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TryStartWorkflowAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac262308c61a99cb6a1ce50d1df8669453274d3136b03c879051e16ddda50029"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ResumeWorkflowAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"c05281ca65819840ab0a21fba65d6f2d95618ae53acb8186846fb015b68297a8"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ResumeWorkflowsAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a2937b79e0e452c38958e9fd43c3f319c92b3c4e1e4d909f3cba995e9e8067"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] TriggerWorkflowsAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c04ecbd099bdd1b133a8ecd4d922e90eef8cbfc8731b3003629dbcf22892032e"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ExecuteWorkflowAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"32141be88b99b5ec66d793d53c987ff1b7fe635be6cf02e3531e19062d6da058"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CancelWorkflowAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6aa69beb9d06f4296a19c4df1666375a0981891fb2de8fed24a313a1d57472a"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] FindWorkflowsAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"23d1a24dd35b6b807b852444d379bf9ce8b079e8a16389cf60bd9cd0b09870ad"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ExportWorkflowStateAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e5038d7533479618308e76796ca834503f07bc8e9283260a39ccda6e2135d45"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] ImportWorkflowStateAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c90af600807c4191d82fe15ebb822a5f49845129737a5b953efd124566eebf"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] UpdateBookmarkAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"913ef5a9b75c0750de78e7285c4978b58ae72cf524647bb59d98af297ba3f006"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] CountRunningWorkflowsAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Contracts/IWorkflowRuntime.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"e821a31b79f993ab1e0e45923a913174d6b90ff0034ac8bc73006821773bbf2e"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] ActivityTypeName"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Entities/StoredBookmark.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"91ec9dd70116de61152dd4e9200b41ba370ab7d9020cd225376bfbd28cb24388"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] ActivityState"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Entities/WorkflowExecutionLogRecord.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1f1ddea781e966293cbceed3e5dfcac64e5180607860782a737133499207729"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] WorkflowGraphNotFoundException"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Exceptions/WorkflowGraphNotFoundException.cs"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b2cf8e8fbd188165c2a59d6c5944dd06f2f3478fb21b4a94e62f26a7cc2331"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] AddWorkflowDefinitionProvider"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Extensions/DependencyInjectionExtensions.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5868ddd3b051e4e99bb861e5768e6ed94fe5e147c7b406080e08697f7b19f82"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] SendAsync"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Extensions/WorkflowBrokerExtensions.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"6764c09c1b173d0ffe46ec25c800b41517a927eeb912fbcb136cd227defbd672"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] UseBookmarkPersistence"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Extensions/WorkflowExecutionPipelineBuilderExtensions.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ddb83597a6943f605231f27b9298b80aeb34c9115a17cb21533d2bd8b41dc9d"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] UseWorkflowExecutionLogPersistence"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Extensions/WorkflowExecutionPipelineBuilderExtensions.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"e59832f59b329e8574929b96de0bfbf21e5c05088c682d3964a32bc3e8c05041"}},{"ruleId":"D17","level":"note","message":{"text":"ObsoleteWithoutCallers: [Obsolete] UseActivityExecutionLogPersistence"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Extensions/WorkflowExecutionPipelineBuilderExtensions.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"174aa3a9d4b6e59685fb53de476383290e60a3d02001d18ebbc7d28809f85feb"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] WorkflowInboxCleanupOptions"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Features/WorkflowRuntimeFeature.cs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2e0db7b90e19e96f5ac704828d1295cbf0072e13761f9e01203ba9c71bd51a2"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] WorkflowsFilter"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Filters/WorkflowsFilter.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"e244f227f431de560dbbe08cb5b9e729c1de469c6fe58d65de5233c3c62de1c5"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] TriggerWorkflowsOptions"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Options/TriggerWorkflowsOptions.cs"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"64f524034df805b48443d3d2d7cdeb82e5cc74bbcdfd64cd70a434249dcd60c9"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] ResumeWorkflowRuntimeParams"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Parameters/ResumeWorkflowRuntimeParams.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0c513a0a2b377b72dc8da6ed5e6e3ced79539b09ddc48dcfd93d8f54e88e1c0"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] StartWorkflowRuntimeParams"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Parameters/StartWorkflowRuntimeParams.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec915b068b5a252c127c83f55321a5f97834110639781a5e144275ff0477a78d"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] ExecuteWorkflowParams"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Params/ExecuteWorkflowParams.cs"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7ccace83babd99ace5a11a99fc6e6e26f1135d0e1e021668e1e9ee7268c50a8"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] CountRunningWorkflowsRequest"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Requests/CountRunningWorkflowsRequest.cs"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f87bfff43130709fc662c7395bb3bee05a2be2e4b5a9d0f017129f3d3fefa85"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] ActivityHandle"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Requests/ResumeBookmarkRequest.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c3d5ff9f8e2a81fe208d81e043f5c2bd5f8ae2ae6d18d362d80bad10b74ace7"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] CancellationResult"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Results/CancellationResult.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1abd60e724b09f30b9c0d26b36aed72b5fd23b9f1cdf19dc995884196ee9971"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] BookmarkBoundWorkflowService"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Services/BookmarkBoundWorkflowService.cs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"1771bd332c1d29b05847f6783e72fdf61a990254534a04425f5fb7a73bb585f9"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] BookmarkResumer"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Services/BookmarkResumer.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"053feabc04c19c17af50230db51e1b7994b5c40e5b1c7999f83fd657589afb9c"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] StimulusProxyWorkflowInbox"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Services/StimulusProxyWorkflowInbox.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ce772aadd12b8f8f77efd385af42773fe5f4bbbb2b7df9c2e03079e6bbeaae2"}},{"ruleId":"D17","level":"warning","message":{"text":"ObsoleteWithCallers: [Obsolete] WorkflowHostFactory"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/Services/WorkflowHostFactory.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"619c1873c97bd81b2578b3e9d9d328ad5825cf575c2a8b45fbf922db25c3cfa4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Once \u0060HttpEndpoint\u0060 is updated to produce a fault, update this test accordingly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"test/unit/Elsa.Activities.UnitTests/Http/HttpEndpointTests.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"2be598efb05cc5348efd0aed5a6a8553557c695314bc716678d39cc2eb43fe78"}},{"ruleId":"D17","level":"warning","message":{"text":"BareSuppressMessage: UnconditionalSuppressMessage \u2014 the suppression records no reason: either it carries no justification argument at all, or one that states nothing a reader can weigh (\u0022OK\u0022, \u0022By design\u0022). A suppression is a decision somebody made, and without the reason the next reader cannot tell a considered exception from an unexamined one, so it is never revisited. Write what makes this site legitimately different \u2014 the invariant that holds, the framework contract that forces the shape \u2014 or remove the suppression and fix what it hides."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"test/unit/Elsa.Activities.UnitTests/Http/ZipManagerTests.cs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb4803d17a4afffe8850cc7c027eb85b887604ac54819c7460de0dbdb30bd55a"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0162 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dd2c0f1bc6fae94c476742a893c35de7153943503c0bde5fd83e9da0475b18e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0162 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/apps/Directory.Build.props"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee381145d59a3b140062605f19c6af5f52c90ab1e41f6e37e49f51be0e533970"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS1591 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9d2b43b8ab53514fb9bbd8ddf35937ba1228fa45d7b655a08e2167b6f72e42b"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS1591 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/apps/Directory.Build.props"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69733652673a4e382c03f5b730b94f5f9fe87a8d8fa55b055851b97560d2c3f"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0618 \u2014 this warning is switched off for the WHOLE project, in every file it builds, including code written years from now: nothing at the call site records that the rule was ever silenced, so the next reader has no reason to look here. Fix what the rule is reporting and drop the code from the list, or \u2014 if some occurrences really are legitimate \u2014 narrow the suppression to those sites and give each one its reason, so the rule keeps protecting the rest of the project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Directory.Build.props"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1175b6c0dcfc303c735c78ad877345fc6275aa1c0248b22c5f4165a347cd32c"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: Elsa.Server.LoadBalancer: \u0060Elsa.Server.LoadBalancer\u0060 contributes only 5 significant line(s) \u2014 an empty/placeholder project is structural noise. Remove it or fold its contents into a real project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/apps/Elsa.Server.LoadBalancer/Elsa.Server.LoadBalancer.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef15cd8b33dd56dae27dd854bd5094e2ef03bff07ae2ad3eedf70ecacdb7eeb1"}},{"ruleId":"D20","level":"warning","message":{"text":"Context and decision are both boilerplate filler; the body gives no rationale for why ADRs were chosen (vs. alternatives like a wiki or commit log) and no consequences beyond citing Nygard\u0027s article: Replace the Context/Decision with a real problem statement (e.g. \u0027Architectural decisions drift without a single source of truth\u0027) and add Consequences: who owns the ADR, how often it is reviewed, and where to find updates"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/adr/0001-record-architecture-decisions.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba7e8b2b0d36c266cd8797c72439ab2aecfc7fe6a228dff69b10834ad688e90e"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences section begins but only one consequence (reflecting a failed state) is listed; trade-offs of the alternative considered are not mentioned: Add a sentence or two on the trade-off of maintaining Faulted status for the parent when its child resumes successfully"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/adr/0002-fault-propagation-from-child-to-parent-activities.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd2cb86f77fb11b013f203a9ecef5dab58c42980e73ef2e69469b1c37a8b59f9"}},{"ruleId":"D20","level":"warning","message":{"text":"The decision is an internal design principle with no consequences/trade-offs; it is a one-line rule rather than a documented rationale and its cost: Add a Consequences section covering the trade-offs of synchronously configured converters (e.g. slower assignment paths for non-nullable destinations, loss of diagnostics visibility)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/adr/0011-output-conversion-at-binding-is-synchronous.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b97ae42b6804948fd38f73893a3b74c792a7cec58bcbff2d596695069f789bc"}},{"ruleId":"D20","level":"warning","message":{"text":"The decision is stated but consequences/trade-offs are not detailed (e.g. how clients consume the catalog vs hard-coding, loss of type-coercion for new converters): Add a Consequences section covering trade-offs such as client dependency on the registry and the cost of maintaining a reference converter in tests/samples"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/adr/0013-output-converter-discovery-is-server-owned.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d016e60d59e2d3abb24f33365b6b3690c8b9e3e3bae697e4e84630999519f24"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a list of linked ADRs and contains no single decision document: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/adr/toc.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e939e1cfd1fb9207eee55ead4d5825b7ece2d925cdb9d459d551d9bef4154ffa"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ActivityExecutionLogUpdated (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Api): ActivityExecutionLogUpdated (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Api\u0027s public surface via BroadcastWorkflowProgress.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f6cb0bb909b58bfa6e4cf3af3d6b3e7d62259a66f49e3ce3026e374ebfa41f1f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ActivityExecutionRecordDeleted (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Api): ActivityExecutionRecordDeleted (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Api\u0027s public surface via BroadcastWorkflowProgress.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cdcef8a42ca033c42f9d3b5f8cebf9af0d864f14889b551626129eab1380e4c1"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ActivityExecutionRecordUpdated (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Api): ActivityExecutionRecordUpdated (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Api\u0027s public surface via BroadcastWorkflowProgress.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"782f58d7dd899b1f35a0a3606048f66ae8b6e96d3565e7a70588331770c17fcb"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowExecutionLogUpdated (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Api): WorkflowExecutionLogUpdated (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Api\u0027s public surface via BroadcastWorkflowProgress.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8a1a9cd8eac460e39b7fc263d0dd86d9720ab1baf7650af21215a5f358014867"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowInstanceSaved (Elsa.Workflows.Management \u2192 Elsa.Workflows.Api): WorkflowInstanceSaved (context Elsa.Workflows.Management) is exposed in Elsa.Workflows.Api\u0027s public surface via BroadcastWorkflowProgress.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"14602a8b758d85456e7e240afe674c3468a39594535e5e227d9c3b63214d81d0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ObjectLiteral (Elsa.Expressions \u2192 Elsa.Workflows.Core): ObjectLiteral (context Elsa.Expressions) is exposed in Elsa.Workflows.Core\u0027s public surface via Input..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1429fd2ab43b6e41979369ea9cecb85ab432130c09ea11fa5fdd24fbbeef0a79"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via IWorkflowDefinitionService.MaterializeWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"226a809e1d8819e79189e6a41f59f99563139865bc1f0fc27aee0b8a62c607ba"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via IWorkflowDefinitionService.FindWorkflowGraphAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6ad824a2227a05bc7cc69fbc441ba2b7b599d00ec9a3ee873807b496e45c1b7f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type VariableUpdateValue (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): VariableUpdateValue (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via IWorkflowInstanceVariableManager.SetVariablesAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f93591f5baf206155ea192c23ba69aad44e7be985de4949a8f4ace33a0bf77b0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type VariableDefinition (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): VariableDefinition (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via VariableDefinitionMapper.Map \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4d729ccbd72306a89b373703a3587cbab2bfa5b7714437d53bd2267d88befcf4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type VariableDefinition (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): VariableDefinition (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via WorkflowDefinitionModel..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e0ab043b9d0b21ff9bada8a488f7aa6b5f98caa92e6d8cce51040dce9f7a83c0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type VariableDefinition (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): VariableDefinition (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via WorkflowDefinitionModel.Variables \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"85fe99e93af9d7de593a869c15407a08120a8679c1509adf9f198011ef333627"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via WorkflowGraphFindResult..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bd42cd1a4b7fbeeb7ec6d18871cfa61b9efec8a52501b8d79444a406453244a1"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via WorkflowGraphFindResult.WorkflowGraph \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"116dfa6868a9c7f15562a198cc4481fd2b80b9f31e8caff8e4109da3728b68be"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via WorkflowGraphFindResult.Deconstruct \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"545344ba1f7c0bfa27905415c6c8495b086920cf1a995c729a70743c95ee4074"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via CachingWorkflowDefinitionService.MaterializeWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a0474bff0bb309bac96af6c7f0978fe0a8d2f3df5ca032cfcfe64dbf167ba8bd"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via CachingWorkflowDefinitionService.FindWorkflowGraphAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"71b80eacd292b02c9b240532571671ad56aa8d6375c6cb7819dece092833f8c4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via WorkflowDefinitionService.MaterializeWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"73227c4e36cea1c84016b89f6a42fc4af47e8071c57405ad02e97b6931b4bf9a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via WorkflowDefinitionService.FindWorkflowGraphAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91d021ab2d460f0e69b84dc6f1b31b3650394dc43f8b4245e6ff40f026041140"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type VariableUpdateValue (Elsa.Workflows.Core \u2192 Elsa.Workflows.Management): VariableUpdateValue (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Management\u0027s public surface via WorkflowInstanceVariableManager.SetVariablesAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4d4a0300775cb30f568cdc4df66a7c8833c0fa3c39113c6d3e77821b7429a0a6"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via IWorkflowCanceler.CancelWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6c6b0bd602739704dd457c8690c2c2c80e4a4bc3e1cf389157653f6069b2b60d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via IWorkflowHost.WorkflowGraph \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e01536dffccc621624b540d382bca872f264bc69336ce9fd9e195412a6670db3"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via IWorkflowHost.RunWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7a1fbf7029563058e982ea6e2ee80c215e24fd1a1ebd7c3d0805e8d7fce5c555"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via IWorkflowHostFactory.CreateAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2175b68bbe1797fa7c18916a5f8d4757e254ed31f4742ac0a0a57554fba1be81"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via IWorkflowInvoker.InvokeAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"55b8b79190023361e1d917f29dd2d572ea1a5b866431a0e2165fbab34b09f487"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via IWorkflowInvoker.InvokeAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e16415803751f45217e11cd482acdd71dc7f2685920a57763318ca954c881661"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via TriggerBoundWorkflow..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b53dafe62b34663cd78c717591ffa3a9e2cc47db5fbc0150d8e5817c8a81c042"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via TriggerBoundWorkflow.WorkflowGraph \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3d843cb152af6a864679888776b212725e5fa3b25d6f4d5c0f0d92b306424f89"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via TriggerBoundWorkflow.Deconstruct \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"630372a84989842ad650a3d03ae79d4907294574c0dbe90a1fae26246ad56b7e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via WorkflowCanceler.CancelWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"173f4b77a517202f2582d184fa9aff8f8a30e8dd171351f1b4a6d6c2adc6aa39"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via WorkflowHost..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8eff1fc6ae7b7eb3e5e45bdcb0f9f81972360137fc739a09fcad9e49e6c80d80"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via WorkflowHost.WorkflowGraph \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cdbf1b676f9b48ff3d9267e2e509221ad43f4f2d553026488a41b279746e284c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via WorkflowHost.RunWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8d627b9613ffb5c35c61799f249773aaf3c77280c33bc997b1e17b3b8054c901"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via WorkflowHostFactory.CreateAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fb146dfa6cac160b264055787c707eec17ab0d4120597afe1703477ee6694286"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via WorkflowInvoker.InvokeAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"579633d67846fe0aff362e66382281c787c28a1a6696896e5abb6b910fbf4e4c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowGraph (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowGraph (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via WorkflowInvoker.InvokeAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c3d120bc42f5633c94a49799865bda442fe4568aa310ba6144eb05d2bae1f6f9"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowInstantiationStrategyContext (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowInstantiationStrategyContext (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via CorrelatedSingletonStrategy.GetAllowActivationAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"996fab22ca008c2ade60c9ef996d5eb7944fd923c6948257bd0de6d8f803d4b4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowInstantiationStrategyContext (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowInstantiationStrategyContext (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via CorrelationStrategy.GetAllowActivationAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1c245bb2132ac8b7821b4b68ebfcfdf7165ff89806b8ef58eb0c7f73ca500391"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowInstantiationStrategyContext (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): WorkflowInstantiationStrategyContext (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via SingletonStrategy.GetAllowActivationAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"473011489a435e591fefe673537e394df3c052bc03838a31b59349347c06570b"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowValidationError (Elsa.Workflows.Management \u2192 Elsa.Workflows.Runtime): WorkflowValidationError (context Elsa.Workflows.Management) is exposed in Elsa.Workflows.Runtime\u0027s public surface via ITriggerPayloadValidator.ValidateAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d57eb5d499fdc93fc406abf9dd2c7cb104453fee8c4a42b1cb34d13e460b0eaf"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ExceptionState (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): ExceptionState (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via ActivityExecutionRecord.Exception \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"74679cd4ec4cccd6d1a9b8885f67948e1aacbefe383fd2b2bd2640d674bde0a9"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ActivityCompleted (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): ActivityCompleted (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via CaptureActivityExecutionState.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ef706bf34db3e4e2b3c43baaa9b8744a4723dd3f955a74a70947c7576cf1a478"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowInstancesDeleting (Elsa.Workflows.Management \u2192 Elsa.Workflows.Runtime): WorkflowInstancesDeleting (context Elsa.Workflows.Management) is exposed in Elsa.Workflows.Runtime\u0027s public surface via DeleteBookmarks.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a7b8c62d287a5b89c2f5e8d4a5dcc12868dd53d780f16e9e8213cda278d51b68"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowDefinitionDeleting (Elsa.Workflows.Management \u2192 Elsa.Workflows.Runtime): WorkflowDefinitionDeleting (context Elsa.Workflows.Management) is exposed in Elsa.Workflows.Runtime\u0027s public surface via DeleteTriggers.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8cd6c6013d1ffd7b5d14ab3f2c81484540d1aafbb7ab0a3f764484b0f3dd748f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowDefinitionVersionDeleting (Elsa.Workflows.Management \u2192 Elsa.Workflows.Runtime): WorkflowDefinitionVersionDeleting (context Elsa.Workflows.Management) is exposed in Elsa.Workflows.Runtime\u0027s public surface via DeleteTriggers.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6017ccb63e3cbb263dc47b336f1c2506fc14100e2b11b61025fcb66f362084f6"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowDefinitionsDeleting (Elsa.Workflows.Management \u2192 Elsa.Workflows.Runtime): WorkflowDefinitionsDeleting (context Elsa.Workflows.Management) is exposed in Elsa.Workflows.Runtime\u0027s public surface via DeleteTriggers.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8b4c595ed337dc5612d010534732bebc52939af4d02851020968e2098d292961"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowDefinitionVersionsDeleting (Elsa.Workflows.Management \u2192 Elsa.Workflows.Runtime): WorkflowDefinitionVersionsDeleting (context Elsa.Workflows.Management) is exposed in Elsa.Workflows.Runtime\u0027s public surface via DeleteTriggers.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2fa7e9220e5d97ba8a454338195701afe1564d65fb5edea7a79e53725cfd977a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowInstanceSaved (Elsa.Workflows.Management \u2192 Elsa.Workflows.Runtime): WorkflowInstanceSaved (context Elsa.Workflows.Management) is exposed in Elsa.Workflows.Runtime\u0027s public surface via SignalBookmarkQueueWorker.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bbd570aad263aa1ab5e84cfc708113993b9e46c2ad25b9e124fbc2847f08f304"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowDefinitionValidating (Elsa.Workflows.Management \u2192 Elsa.Workflows.Runtime): WorkflowDefinitionValidating (context Elsa.Workflows.Management) is exposed in Elsa.Workflows.Runtime\u0027s public surface via ValidateWorkflowRequestHandler.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"905a2357ae83f62274f9a6ac1cadd66f79863476d2d9325b0b112f9a99c576f2"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type InvokingActivityCallback (Elsa.Workflows.Core \u2192 Elsa.Workflows.Runtime): InvokingActivityCallback (context Elsa.Workflows.Core) is exposed in Elsa.Workflows.Runtime\u0027s public surface via EvaluateParentLogPersistenceModes.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0f50de23a9898c095ff81a3239dacbafd5a572b9f4f3f1d052fdcbcff58255fa"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowStateCommitted (Elsa.Workflows.Runtime \u2192 common): WorkflowStateCommitted (context Elsa.Workflows.Runtime) is exposed in common\u0027s public surface via DispatchWorkflowExtensions.DispatchWorkflowAndRunToCompletion \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0d7431ca456c365b49ab2ba181f8c21bee3c87ead8995d836a5198d2c1facf6c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunActivityExtensions.RunActivityAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f15f6716007a80094e55044d0de9ddab32ff1b1f2bc0c486439f3252fda50a04"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via .RunActivityAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"97f0f793059e5f21f2b3f57000b9fd92d0e33b24c396cc8e20f7752dc42c3a89"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultAssertions.AssertActivityExecuted \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8a6c1f7f44c2f01d31e435f89f0ef20f186fc6073b6eaf0d63f5a6669c65ebcd"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultAssertions.AssertActivityNotExecuted \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"af2e7404fdd4c13af51e2609998d474af937aeb6ba277f5d11a4c0cb0d3709f6"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultAssertions.AssertActivityCompleted \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f6dbc018a6cc7291f73ac151aba91f9ee62d6bd12c46eda392aacb3dead1f3de"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultAssertions.AssertActivityStatus \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fc459084e243ea5e2c06b70be451866151eabe9b0ed87a4c5d666c5729fe89b7"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultAssertions.AssertActivitiesExecuted \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"aa8f8f15d5a87d189b90f03b92b937df4ee7b580237f371cd17897bc6130f5c1"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultAssertions.AssertActivitiesNotExecuted \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2cf546cb9b7c55e4fbb95ad6df543f0b66a2672a5a2cb85f044c115ee3f6d3a4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultAssertions.AssertActivitiesCompleted \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f9b7e2692fcc2baad70dca537b33b1d7fa70cbabd8468008117aacfa0d37055f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultAssertions.AssertActivityExecutionCount \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e50f0b66996971f189bd4ca55da79a78b40dc6c7ddc05ab43b0bd1e2489504fb"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultAssertions.AssertWorkflowCompleted \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"873c47379b80d942a46640978b842c374fb4b3197b48d2d96360e2edb677cc9e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultAssertions.AssertWorkflowStatus \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"03d810bbbaf51a486939078c120480c6c1b76a79d0358680ef6d6de857bba6bc"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultExtensions.GetActivityContext \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"aaf674b25c045dc499fbdb4e7d35e8796815edcba772cefe15c36a6274d45316"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultExtensions.WasExecuted \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c72289f4e912cc5d17bcadaa81072e2a41deec69c706e521a0ae2de435a87ffd"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultExtensions.WasCompleted \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ff4c7951d63232f88823a08d3afa1a47a2fbc3de3e6b43db90ce6345faa045b1"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultExtensions.GetActivityStatus \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"613270fe20d16b740b2b5f80d2ba094a222e5942e7c3bf22e3d30cb8b4fc40d2"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultExtensions.GetExecutedActivities \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b3ede988ece9eb97d78ac1fe93f8608bc674dc48a225ac645d74bc7cf2359f5c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultExtensions.GetCompletedActivities \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"69016b520ae814109f3799037fb3a4237aefe784481bd135abd9bd32d7b89d8b"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via RunWorkflowResultExtensions.GetExecutionCount \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7ce5e39867d9f4e792a210d2de90ad09c490b0dbe0d7195288516c146c21f033"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via WorkflowTestFixture.RunWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"49c5794f3a426dcd459a5cc8cc78bbf2e5c0408140b8e72eeb7a6403ef7e8085"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via WorkflowTestFixture.RunActivityAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0c10a209828324e22bb9da476126a4dafb1eb460b8d2d008fa22ac3f501ec091"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via WorkflowTestFixture.GetOutcomes \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fee6c42181da4521c93a34185975d19e6f907a4d9c7b414358a6462dd537c05f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via WorkflowTestFixture.HasOutcome \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f12d64962d469f06607edb6adb7f87114b505a79ee36ced4cbc5f09d8f2508cb"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowResult (Elsa.Workflows.Core \u2192 common): RunWorkflowResult (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via WorkflowTestFixture.GetActivityStatus \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d8ece050518d53fc29074b1b27b3ef31f17e28d68e59ff03174c02b389c04a53"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowFinished (Elsa.Workflows.Core \u2192 common): WorkflowFinished (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via WorkflowEventHandlers.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e3adf278ea38dece61adc491cf55bb0de95b01c1a9237892c348ca52f7957ea7"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowInstanceSaved (Elsa.Workflows.Management \u2192 common): WorkflowInstanceSaved (context Elsa.Workflows.Management) is exposed in common\u0027s public surface via WorkflowEventHandlers.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b64eae0abb7ad324cfece4e7df97a64ad1e9f254650a26eadf3aa734aef7700c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowStateCommitted (Elsa.Workflows.Runtime \u2192 common): WorkflowStateCommitted (context Elsa.Workflows.Runtime) is exposed in common\u0027s public surface via WorkflowEventHandlers.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3341bf46748fc040e6bc2485a352fba4fffb17766893a196e8227c6f6dd707a7"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ActivityExecuted (Elsa.Workflows.Core \u2192 common): ActivityExecuted (context Elsa.Workflows.Core) is exposed in common\u0027s public surface via WorkflowEventHandlers.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5b65f2d69fa8144b30b5ffff6280577981e75a682853626261d3a0b4d06514c0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ActivityExecutionLogUpdated (Elsa.Workflows.Runtime \u2192 common): ActivityExecutionLogUpdated (context Elsa.Workflows.Runtime) is exposed in common\u0027s public surface via WorkflowEventHandlers.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"36c669301966f1461c6b2e7558d5790e30ffcbb6f878a5471beb9d317efb7d78"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type HttpEndpointRouteProviderContext (Elsa.Http \u2192 Elsa.Tenants.AspNetCore): HttpEndpointRouteProviderContext (context Elsa.Http) is exposed in Elsa.Tenants.AspNetCore\u0027s public surface via TenantPrefixHttpEndpointRoutesProvider.GetRoutesAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"76f2e2be007128aebec0b58ca49b058c88d7b88330351478fe6243f438575545"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowTriggersIndexed (Elsa.Workflows.Runtime \u2192 Elsa.Http): WorkflowTriggersIndexed (context Elsa.Workflows.Runtime) is exposed in Elsa.Http\u0027s public surface via InvalidateHttpWorkflowsCache.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"eed2ce882eab31dc3c3031188e437d52e1fdc7ce2c22fa2be2ad84567a35b237"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowDefinitionsReloaded (Elsa.Workflows.Runtime \u2192 Elsa.Http): WorkflowDefinitionsReloaded (context Elsa.Workflows.Runtime) is exposed in Elsa.Http\u0027s public surface via InvalidateHttpWorkflowsCache.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2c6afe2a90f6f6687f1eae0adf140594c29205a9be5af77760375ff98fefef31"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowTriggersIndexed (Elsa.Workflows.Runtime \u2192 Elsa.Http): WorkflowTriggersIndexed (context Elsa.Workflows.Runtime) is exposed in Elsa.Http\u0027s public surface via UpdateRouteTable.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"143055427949051d874f1125c480e57cb1e30bd1e579fe70bfdfe0858e3b1a67"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowBookmarksIndexed (Elsa.Workflows.Runtime \u2192 Elsa.Http): WorkflowBookmarksIndexed (context Elsa.Workflows.Runtime) is exposed in Elsa.Http\u0027s public surface via UpdateRouteTable.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7a2f03750ce60955dafd5751508a7fdb5e57fd1de638fc8a6f1d3834fbb77f89"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type BackgroundActivityExecutionCompleted (Elsa.Workflows.Runtime \u2192 Elsa.Resilience): BackgroundActivityExecutionCompleted (context Elsa.Workflows.Runtime) is exposed in Elsa.Resilience\u0027s public surface via PropagateRetryAttemptedFlag.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0612d2038e5ac6a123ed39e29b1c20446e25a432cd6155a03b26fb8edda8fdde"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RecordRetryAttemptsContext (Elsa.Resilience.Core \u2192 Elsa.Resilience): RecordRetryAttemptsContext (context Elsa.Resilience.Core) is exposed in Elsa.Resilience\u0027s public surface via ActivityExecutionContextRetryAttemptRecorder.RecordAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8839e7c31909138137790dafc71782c763f8c7a7a5150a9a38b15ecc545f5870"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MaterializedWorkflow (Elsa.Workflows.Runtime \u2192 Elsa.WorkflowProviders.BlobStorage): MaterializedWorkflow (context Elsa.Workflows.Runtime) is exposed in Elsa.WorkflowProviders.BlobStorage\u0027s public surface via IBlobWorkflowFormatHandler.TryParseAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5235deb3e7fab1427b00c4462952f6227e338ed89cb4ef2f1c90f93eb0f78d14"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MaterializedWorkflow (Elsa.Workflows.Runtime \u2192 Elsa.WorkflowProviders.BlobStorage): MaterializedWorkflow (context Elsa.Workflows.Runtime) is exposed in Elsa.WorkflowProviders.BlobStorage\u0027s public surface via JsonBlobWorkflowFormatHandler.TryParseAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4be4301abdb8b3c05eacb2fc36409b0c4da0638f696d594348e0befd0f657084"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowTriggersIndexed (Elsa.Workflows.Runtime \u2192 Elsa.Scheduling): WorkflowTriggersIndexed (context Elsa.Workflows.Runtime) is exposed in Elsa.Scheduling\u0027s public surface via ScheduleWorkflows.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2f4f509a51ceae2d172a89dcc51d4636bc732e96800d5525a1e50a0f0982ed0f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowBookmarksIndexed (Elsa.Workflows.Runtime \u2192 Elsa.Scheduling): WorkflowBookmarksIndexed (context Elsa.Workflows.Runtime) is exposed in Elsa.Scheduling\u0027s public surface via ScheduleWorkflows.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b4e85d6da81b0dc2b3d4293b565a3c8fab96a2f4d483d6d38200d77349c5cf70"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowInstanceResponse (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): RunWorkflowInstanceResponse (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowClient.RunInstanceAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f92cc4e4fa9f85b0c87bb752e9565f4947c98973f088d742efac3ae1e88246f8"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RunWorkflowInstanceResponse (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): RunWorkflowInstanceResponse (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowClient.CreateAndRunInstanceAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"651145ae29e6e30fac4ec6cb54b33e4921b2ac1a1a2e2659ec48f22ea54e1908"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RefreshWorkflowDefinitionsResponse (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): RefreshWorkflowDefinitionsResponse (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowDefinitionsRefresher.RefreshWorkflowDefinitionsAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"37367babde1dc5be4ebb9ab41747fdf77fab5bcbf214fd14090410adf9bcc34c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type IWorkflowClient (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): IWorkflowClient (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowRuntime.CreateClientAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1724332e52c563426aa625866d3f13b4362275bd53e10d9f862a1a72bf39530e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CanStartWorkflowResult (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): CanStartWorkflowResult (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowRuntime.CanStartWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6fb66348517266c96e3da2e51a9666cccbcd6c0ef17c0561f14b4caba141e90a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowExecutionResult (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): WorkflowExecutionResult (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowRuntime.StartWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6b39a5493941e9517efa0662a59cb3935b21f51e1195750dd0e3db378d350b9a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowExecutionResult (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): WorkflowExecutionResult (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowRuntime.TryStartWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"42d06632184d6b8bda2175e94192d608949314b1f25ebe7d133d5e52b8898291"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowExecutionResult (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): WorkflowExecutionResult (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowRuntime.ResumeWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f733ea16daaf3fe3a2e4f50c9b69dce57d6a3178f60b46aa08d6dc635e626e42"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TriggerWorkflowsResult (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): TriggerWorkflowsResult (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowRuntime.TriggerWorkflowsAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e8462780492b28fd50475dcfa8ac2b407798ff5ce777e708140791f98140cb1e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowExecutionResult (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): WorkflowExecutionResult (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowRuntime.ExecuteWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"584d43e0e74ab6141fd6ec142853e7e8e105b983eacfe01a958383d820a644bd"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowMatch (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): WorkflowMatch (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowRuntime.ExecuteWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"680cb20c6e928b92ac6675f88246f96771896ed9b591d71a0322362410b2cfce"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CancellationResult (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): CancellationResult (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowRuntime.CancelWorkflowAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c643655c24068b5aded3a72fd553bfe5b077c4063652379912da3365983142db"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowsFilter (Elsa.Workflows.Runtime \u2192 Elsa.Workflows.Runtime.Distributed): WorkflowsFilter (context Elsa.Workflows.Runtime) is exposed in Elsa.Workflows.Runtime.Distributed\u0027s public surface via DistributedWorkflowRuntime.FindWorkflowsAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c7a49eb647e57930a9b112227b2135c8042d7c21b916de7417b2b4ab170ef34d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AlterationJobCompleted (Elsa.Alterations.Core \u2192 Elsa.Alterations): AlterationJobCompleted (context Elsa.Alterations.Core) is exposed in Elsa.Alterations\u0027s public surface via AlterationJobCompletedHandler.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1b12e07fc5a276d3357fd322a9e092b83dad878909ea73b6ce67bb66eb913f25"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AlterationPlanCompleted (Elsa.Alterations.Core \u2192 Elsa.Alterations): AlterationPlanCompleted (context Elsa.Alterations.Core) is exposed in Elsa.Alterations\u0027s public surface via AlterationPlanCompletedHandler.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ada5535b2c34295d8b1cb45da758d42a7a7de6f7117b04eff5a21b7e90069075"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AlterationJobCompleted (Elsa.Alterations.Core \u2192 Elsa.Alterations): AlterationJobCompleted (context Elsa.Alterations.Core) is exposed in Elsa.Alterations\u0027s public surface via ResumeWorkflowInstance.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8095f15a1648644bd1c88d9961b5f1f1e93fa2637255f4e5c45eb3fecbb88e87"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowDefinitionDeleted (Elsa.Workflows.Management \u2192 Elsa.Labels): WorkflowDefinitionDeleted (context Elsa.Workflows.Management) is exposed in Elsa.Labels\u0027s public surface via DeleteWorkflowLabels.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ee61a7de34e0d277fa1fe49a6fa411cf2f1a369904880145ae190c9dabd194ee"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WorkflowDefinitionsDeleted (Elsa.Workflows.Management \u2192 Elsa.Labels): WorkflowDefinitionsDeleted (context Elsa.Workflows.Management) is exposed in Elsa.Labels\u0027s public surface via DeleteWorkflowLabels.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f3547bf0bef62682b46015e1ab823f0ebff7b3a170090f92e5defc97161f8b1e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StructuredLogEvent (Elsa.Diagnostics.StructuredLogs \u2192 Elsa.Diagnostics.StructuredLogs.Persistence.Relational): StructuredLogEvent (context Elsa.Diagnostics.StructuredLogs) is exposed in Elsa.Diagnostics.StructuredLogs.Persistence.Relational\u0027s public surface via RelationalStructuredLogMapper.Map \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b354f9da9442ab105dbed32378d11ef03a4558e87c8764a53dd0393fc9a0c665"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StructuredLogFilter (Elsa.Diagnostics.StructuredLogs \u2192 Elsa.Diagnostics.StructuredLogs.Persistence.Relational): StructuredLogFilter (context Elsa.Diagnostics.StructuredLogs) is exposed in Elsa.Diagnostics.StructuredLogs.Persistence.Relational\u0027s public surface via RelationalStructuredLogSqlBuilder.BuildQuery \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7ac08a4ab1856e764cb2071e3f8fc94175d2d701eada696554ca97cad124c807"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StructuredLogEvent (Elsa.Diagnostics.StructuredLogs \u2192 Elsa.Diagnostics.StructuredLogs.Persistence.Relational): StructuredLogEvent (context Elsa.Diagnostics.StructuredLogs) is exposed in Elsa.Diagnostics.StructuredLogs.Persistence.Relational\u0027s public surface via StructuredLogWriteBuffer.WriteAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bcfe054ac91b16889d3b8edc0b23c0f5cec59af44099119fcde62f76a1b6d876"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StructuredLogEvent (Elsa.Diagnostics.StructuredLogs \u2192 Elsa.Diagnostics.StructuredLogs.Persistence.Relational): StructuredLogEvent (context Elsa.Diagnostics.StructuredLogs) is exposed in Elsa.Diagnostics.StructuredLogs.Persistence.Relational\u0027s public surface via StructuredLogWriteBuffer.WriteManyAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9079646700fdb3b89e3d5d8bd7981e7517b276907bc9a15581d44bd5ac195522"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RecentStructuredLogsResult (Elsa.Diagnostics.StructuredLogs \u2192 Elsa.Diagnostics.StructuredLogs.Persistence.Relational): RecentStructuredLogsResult (context Elsa.Diagnostics.StructuredLogs) is exposed in Elsa.Diagnostics.StructuredLogs.Persistence.Relational\u0027s public surface via StructuredLogWriteBuffer.QueryAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"054b5b367e22838a1a57499479ab5eb834b4f36bd06eae0238c953a4b8e9071c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StructuredLogFilter (Elsa.Diagnostics.StructuredLogs \u2192 Elsa.Diagnostics.StructuredLogs.Persistence.Relational): StructuredLogFilter (context Elsa.Diagnostics.StructuredLogs) is exposed in Elsa.Diagnostics.StructuredLogs.Persistence.Relational\u0027s public surface via StructuredLogWriteBuffer.QueryAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"80671b0a8c1f75c1ef74e691871d76c385af2f7fb8b8a7123934b47b002113cb"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StructuredLogEvent (Elsa.Diagnostics.StructuredLogs \u2192 Elsa.Diagnostics.StructuredLogs.Persistence.Relational): StructuredLogEvent (context Elsa.Diagnostics.StructuredLogs) is exposed in Elsa.Diagnostics.StructuredLogs.Persistence.Relational\u0027s public surface via RelationalStructuredLogStore.WriteAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e94cbbe424c45f918ddc482e8f520c3f11c6311396a7c27dc6c7963140129379"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StructuredLogEvent (Elsa.Diagnostics.StructuredLogs \u2192 Elsa.Diagnostics.StructuredLogs.Persistence.Relational): StructuredLogEvent (context Elsa.Diagnostics.StructuredLogs) is exposed in Elsa.Diagnostics.StructuredLogs.Persistence.Relational\u0027s public surface via RelationalStructuredLogStore.WriteManyAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b4e0632e77d8037e7743c6cd81015cb42f28e74630ffedc49f652ccae14fab47"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RecentStructuredLogsResult (Elsa.Diagnostics.StructuredLogs \u2192 Elsa.Diagnostics.StructuredLogs.Persistence.Relational): RecentStructuredLogsResult (context Elsa.Diagnostics.StructuredLogs) is exposed in Elsa.Diagnostics.StructuredLogs.Persistence.Relational\u0027s public surface via RelationalStructuredLogStore.QueryAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8f998a78a39bcd26e2455896c457a921fa47901ad55300388ef2be7162d9159d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StructuredLogFilter (Elsa.Diagnostics.StructuredLogs \u2192 Elsa.Diagnostics.StructuredLogs.Persistence.Relational): StructuredLogFilter (context Elsa.Diagnostics.StructuredLogs) is exposed in Elsa.Diagnostics.StructuredLogs.Persistence.Relational\u0027s public surface via RelationalStructuredLogStore.QueryAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f0c1065764acb51287e9b17f9454b5671214b250a8c3c0da0f9b2d38fec273d9"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type EvaluatingJavaScript (Elsa.Expressions.JavaScript \u2192 Elsa.Secrets.JavaScript): EvaluatingJavaScript (context Elsa.Expressions.JavaScript) is exposed in Elsa.Secrets.JavaScript\u0027s public surface via SecretsJavaScriptHandler.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b0b25ea5cb3924b22368f739abadea0303a13e3d438276e5bbd6616e38015fe8"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Sqlite): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Sqlite\u0027s public surface via SqliteDocumentStore..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1efc98c20367cf20fbbc3454ebc6dc527beaf55dadc4e1bfbdf4b48bd1da3d60"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentDatabasePlan (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Sqlite): DocumentDatabasePlan (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Sqlite\u0027s public surface via SqliteDocumentStore..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f4658f4fc765c0c26ebba8bc0d8c1cd4ff1a1da145aa0e8ba93a6b5cbfd7c386"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RelationalSchemaPlan (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Sqlite): RelationalSchemaPlan (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Sqlite\u0027s public surface via SqliteSchemaSqlRenderer.Render \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cc922d360a88d853cf46bce41e6effe0d18ebab2bfd1db52733ea0e462fb185e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchemaMigrationResult (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Sqlite): PersistenceSchemaMigrationResult (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Sqlite\u0027s public surface via SqliteSchemaVersionRunner.MigrateAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6916a0feb6d9b31041c4a8050b4ca4857ce0b3cbdbb5fd91e207022634d759b8"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Sqlite): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Sqlite\u0027s public surface via SqliteSchemaVersionRunner.MigrateAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a36eaccb1a18ad767ba4240466edc3199ce96da666803a527f788deebd031a49"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceColumn (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Sqlite): PersistenceColumn (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Sqlite\u0027s public surface via SqliteTypeMapper.Map \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2da7b546a89d4fa34eaece7a7f2b5a554d47ac2182479e2cc3661b54b08aace2"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PhysicalizationPlan (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Sqlite): PhysicalizationPlan (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Sqlite\u0027s public surface via SqlitePhysicalizationPlanner.Plan \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a678e04edcb56be799a715521b0e7312b5b8d4ec9fe9ddb315f575fa23ed29c4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Sqlite): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Sqlite\u0027s public surface via SqlitePhysicalizationPlanner.Plan \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1c9d3446249369905c6f34e3352948942c1298ef13162465f9105c5e3aaa062e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StoragePhysicalizationPolicy (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Sqlite): StoragePhysicalizationPolicy (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Sqlite\u0027s public surface via SqlitePhysicalizationPlanner.Plan \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b53765313dd70dc8905828a3857a2562fc36340aca11610c5d86a183c244b310"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.SqlServer): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.SqlServer\u0027s public surface via SqlServerDocumentStore..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d241a7681ac323a6536fb7d00c7a785aa2e598524e46705c58696c3f8287d146"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentDatabasePlan (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.SqlServer): DocumentDatabasePlan (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.SqlServer\u0027s public surface via SqlServerDocumentStore..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a71d729b84404627c60b6a8f63700105a8b87af7985c3ce53fd9a50d2f37bd66"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RelationalSchemaPlan (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.SqlServer): RelationalSchemaPlan (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.SqlServer\u0027s public surface via SqlServerSchemaSqlRenderer.Render \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5353253a0c4d994b8c523e92f5cef596aa7077d85aaa7d0ddfcf0c81b562752f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceColumn (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.SqlServer): PersistenceColumn (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.SqlServer\u0027s public surface via SqlServerTypeMapper.Map \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c74119b61442218220d6d2fd17e2d8dec865104f66c3a2c17ef3a38e1abadbd6"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Secrets.Persistence.VNext): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Secrets.Persistence.VNext\u0027s public surface via SecretPersistenceSchemaProvider.DescribeSchema \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5d49039445e8d9ccb00c91b7047fb60622e53b5fffd3df1cd3ca0512379b5b45"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Relational): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Relational\u0027s public surface via RelationalDocumentStore..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"de0f8dbd947b33973d033d0586389dfddbfa17245cd737e2e7d0b544072e62aa"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentDatabasePlan (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Relational): DocumentDatabasePlan (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Relational\u0027s public surface via RelationalDocumentStore..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a8529e4f1725548bc458418891f0019593cba740c509a96b5735fc34dcdc6a2e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StoredDocument (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Relational): StoredDocument (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Relational\u0027s public surface via RelationalDocumentStore.SaveAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"651bff2c807576e2f07e93fa62faa005e1d9cdb3004eceaf21ea18bae4252543"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SaveDocumentRequest (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Relational): SaveDocumentRequest (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Relational\u0027s public surface via RelationalDocumentStore.SaveAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a661270c63f4ad542b18c7711c8049b7c061a320ed94fcf0b741a28a43be814d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StoredDocument (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Relational): StoredDocument (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Relational\u0027s public surface via RelationalDocumentStore.LoadAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5e0f6c4d9b4633f3c732e231241e08ebd909bf586626efab1f66fd530079669a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentQuery (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Relational): DocumentQuery (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Relational\u0027s public surface via RelationalDocumentStore.QueryAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5b64b621be04cdde178c7213184305f8434cd98bbded6ee1f9dab5b93d50d64a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentIndex (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Relational): DocumentIndex (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Relational\u0027s public surface via RelationalDocumentStoreDialect.FindMatchingIndex \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2b24d66b3805fdf9d6a8c601f6fda6618362101fce9ee0709150faa25f02c3b7"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentCollection (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Relational): DocumentCollection (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Relational\u0027s public surface via RelationalDocumentStoreDialect.FindMatchingIndex \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7a2f6b2f6765af25486e4c8030b534015d2a78ff38c481c1c0da0171c0117f1c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentQuery (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Relational): DocumentQuery (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Relational\u0027s public surface via RelationalDocumentStoreDialect.FindMatchingIndex \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8efa681b13119df9a9f07aaa6237ee479bbe0e251352b7c90bdf4addda445389"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.PostgreSql): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.PostgreSql\u0027s public surface via PostgreSqlDocumentStore..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"568f89ea992b142dd2f0df2af2568daeff4e8e6ac9a754a9251847e2de60f223"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentDatabasePlan (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.PostgreSql): DocumentDatabasePlan (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.PostgreSql\u0027s public surface via PostgreSqlDocumentStore..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a2391cc22444b93391d1800bdfa5b3933004d78515259d7841452957eb88aa8b"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentCollection (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): DocumentCollection (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbCollectionPlan..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"41e07b5eb26a5b098a2a0962364285f96306954ccaddb59241f743529f8327d0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentCollection (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): DocumentCollection (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbCollectionPlan.Collection \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0bf501fa2d4f30a0699757870c645696310859a7f2aa8c3fb03a12b2088aa77a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentCollection (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): DocumentCollection (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbCollectionPlan.Deconstruct \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e3ef3a026eeada7ee9779d8a8d4a471f6e8a20ea7b3402c51d4a961bc9a5e283"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbDatabasePlanner.Plan \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b2884fe505bfe4a710a1059e787893cfa2c578315187488673bc0ede83733bfd"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbDocumentStore..ctor \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cb3d18f57cc6c2325e06016114f059ff10edf9ec95243e444166f6648193eea2"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StoredDocument (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): StoredDocument (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbDocumentStore.SaveAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"96c541a42dee2739a0d4ffeb090c235da7c1889f81a1c34f197cfaead52cefc5"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SaveDocumentRequest (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): SaveDocumentRequest (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbDocumentStore.SaveAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"78b8c8ce85a5316088b9f20f2aaef1b665cd83e755b5d61a865916ba7ea81571"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StoredDocument (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): StoredDocument (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbDocumentStore.LoadAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f28d3faad75e605cd38a682325e8551984cb1a4aed67f421c138522df71a1b78"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DocumentQuery (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): DocumentQuery (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbDocumentStore.QueryAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0ec521e5621989407cf84095798f822ace04487ae58f457428ea840882ca1ad0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PhysicalizationPlan (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): PhysicalizationPlan (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbPhysicalizationPlanner.Plan \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"837974448b940dd5e721ea1d0aed435aa81a56f401fb167da972299960fd23f0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbPhysicalizationPlanner.Plan \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c1669b55a0ad550c89a4258970ea225229e7fd85ca4ec587cff6f3530e7dfba0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StoragePhysicalizationPolicy (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.MongoDb): StoragePhysicalizationPolicy (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.MongoDb\u0027s public surface via MongoDbPhysicalizationPlanner.Plan \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c0ebe202ff0de26402402a973030d294e296dcafa423abe73b8e523ffdafd08d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Extensions): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Extensions\u0027s public surface via IPersistenceSchemaCatalog.Schemas \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3117624e7f395845da42d10208a88d299c2948e78f3f0296d2437e80fe99f903"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Extensions): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Extensions\u0027s public surface via IPersistenceSchemaCatalog.DescribeSchema \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91d23f866781f2190e61dc14316bd52eabbaf95f5622b6017448354f4b39d5ec"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Extensions): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Extensions\u0027s public surface via DefaultPersistenceSchemaCatalog.Schemas \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c0be8e62b27e4817c45bbda8e39d4dd72125b8016d84820a6176b589f1522ceb"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Extensions): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Extensions\u0027s public surface via DefaultPersistenceSchemaCatalog.DescribeSchema \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c788c22e05bf2a0e7288d118dd6071b87660007946c8db8cf9d47e804b4cb57e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PersistenceSchema (Elsa.Persistence.VNext \u2192 Elsa.Persistence.VNext.Runtime): PersistenceSchema (context Elsa.Persistence.VNext) is exposed in Elsa.Persistence.VNext.Runtime\u0027s public surface via RuntimeEntityPersistenceSchemaProvider.DescribeSchema \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"740db92bdb76e8830254ac61241d07f9e4fcdff0a79971065a1396e81d47c98d"}},{"ruleId":"D26","level":"note","message":{"text":"Split Elsa.Workflows.Core: A workflow core that is large and sprawls over 55 namespaces is a grab-bag. Suggested: by namespace: Elsa.Workflows.Scheduling, Elsa.Workflows.Transitions"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d15d1f08b32e502289a3361945e17f12217f81de622a0e3db418747d11158bc8"}},{"ruleId":"D26","level":"note","message":{"text":"Split Elsa.Workflows.Runtime: A sprawling runtime library at 15k LoC across 41 namespaces is a large grab-bag. Suggested: by namespace: Elsa.Workflows.Execution, Elsa.Workflows.Caching"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7f2da9d40c8583a18dcbbeaa124a4776154e9aa55321970444b520e205d0b04e"}},{"ruleId":"D26","level":"note","message":{"text":"Split Elsa.Common: Generic catch-all name that is large and spans many unrelated namespaces. Suggested: by namespace: Elsa.Utils, Elsa.IO, Elsa.Serialization"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1556d194b82ec620086527c1c806fa1eb9f13b22b2e6eea4beb489b659206817"}},{"ruleId":"D26","level":"note","message":{"text":"Split Elsa.Api.Client: A client library at 5k LoC across 80 namespaces is a sprawling grab-bag. Suggested: by namespace: Elsa.HttpClient, Elsa.Auth, Elsa.Grpc"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6f2cfdba926d2dcca858a5e65e80e1ec6a51bba24cbccd0aed4a56f0fc75de83"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c18ebbfb36918612adb22013c5d6598201185900466bf8fad913ba53f06a18ef"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c524721dc93e0e94ecf37680dfdfdbce52b2848f2edda660d7bab7dfdb825609"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"57426d7a620080b2c17c770333e180683b8b3ee63fb2920e5f74249bc0826da1"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"78972309ecf8e52e4690cfb5b9b517c26020655f42dac914242020dad89d03a6"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"440e8c5bc26bfdecc0bbcfdafa5cc6dbd6fb3dae0ead78d542411a04973b11d1"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"50982804e658e45b41e29bdc02bca77d7dd510f1d76ee53ffb8f567b1a2e8b90"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9ef86e977780930dfa5588c3e16b28ad51248b57095aed0735cca7c3124e5966"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3f5260e6f96b7c885c49c07b3b0fc7c957db2de6c29beda14d60d8766e538fb9"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5143fb3509db1861929b990eade1b1de908c63ab722d54532c8c952cfce2b64f"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2a762c08326b5502fb8ad03dc9df196121277c0b3a99e8b46b2ed34266402e71"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b85b2776294ef00c36289de204b570faf9a02ffe479a75d720846e75c93945f1"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8a03197b053c9a1318218a16e620c68e797057ab06ca9c186f3af0210fe34eae"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ce9c00671deb7147470f1983bd7bc5657f4008a6cea2f4430a96dce9687ea736"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7377cb678746f10caaaf44608b51b89bb09180d17e911ee600eee1f04f693aa3"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8d79a25d50d88b6663b0c6962a010d2c7e7e74eaf7a96560b0be8e407e27a843"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"748d26da0c550cc1a58fa0a539db6b0f69fb3aea43cc4c62ebf9ba807dbc69fc"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6acb872020000bf9da132e70c34cfd654e8a92f445765a7d4a7a160bc05ed8df"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3efea915dc46246c514e0d93e6ff2682935481a00a1fe6879a6b60b7ed93a5e2"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4206051d96f4acdc3af7d85dc4cd7d499b790a270fdabc27f1062248d4b920ac"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f686e26e3eab15873c4728ac1f9d917b38fcaa6bd4788a758914a8967050e6d3"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"12118066cf13ce0304ccb06fa1c47dce45c9ec21f578f45764d919cf8e7091bc"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"492d96832671c6421d602ec0a0927ad7b089a96ba371d7e2a11f460d6254b258"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9df31840d870af7ecd7d0639cb156950feaddce3884460921301d8abd4e0e4d3"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ce0c6eb8c5a87a8c77f59d2cbf32b1863f7295336817157b363b013cd0c0fb25"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4b354df6a8c1531b9043a692142be0c526c2ed92c9971e2aba4314529e2c30fe"}},{"ruleId":"D28","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d5b8f11381d61a58459ffc7c595fd52d09c03c711894a63a9578043d2338412b"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b10f794dc38d98929433e8cf0dec4f8a13398d9e755d0300d154da6b53239a84"},"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":"966d21177fb6e2bde9511b23434cf946372a25ec5d207eb37595a5a8653da420"},"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":"19fa70c19cc7319839acb6c79fc32e2f591c21b2ee8670546ee890db57ca844c"},"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":"e627b690c2de1fca76c6f5da097d13613c7fd9597b73cd28a2f817ea65ee2ae4"},"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":"f084aca0c0d329db9edd54fb761149f9f31ac7e9fbacb57558a536168c7cacfa"},"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":"aaa9b9208304a57e0f4a75dc47eb0beadad95125e6465d4dc709f17c9183ebee"},"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":"c7f3120aded9edb3223e622e6776252d6a140548cca9d786d9625ca93b20d4c2"},"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":"f39acc2b10735c8a3966f97e8b8620e7b996a79f8eb2028f323f95d5d8a32699"},"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":"9443145784b10715d09b4e774be4c358890edbcfa7ac92ef5cd9eb23520843d1"},"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":"645016c7310b14f50f922e95e88334702988e449944f269e45caffc24e562104"},"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":"2e2d279095a5000f0dba5cc8d5ead4a954ab8d81c9186586ba3d020a2aff9056"},"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":"30263e1b90d1132ac9f5753389baa5ed5d95c3e1b83855189e0f064b0faea25c"},"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":"048bc48527a72fae5682a33e69046fb590286e1ebe5fe41df9b0c3bc3ccd8cc7"},"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":"697b5e1156982431e3498ea76b54e23e32ac894bcde6d6b98c888327149f424d"},"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":"d5adf8ed9efbf124f84d8154487023925cf5114eb9e509e802d726116b101515"},"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":"ec07730b03f851e1d0793d50aeb73eb0d19f815f5772e01628297264d35907f9"},"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":"f8c573b996b81e75219431d7afed1df9ec1cc00c6f4a71c8144c8b8fe1415f9b"},"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":"c44cfc72ca10e91e64595f0d5f7d8fa0d8fd8bd40fe1c2f93bfff1ee66572660"},"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":"bf65a5778b805c816aa72aebb0e2de87f061d16a5bc9c5df7bad4297658316b2"},"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":"3812c63fc802881e861a1945a60a359e4aedca8c171666bc6053064719ea5de7"},"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":"643024cab2a1379d27c9ceb1638c05b15085fb7f9e9fabebdf4a053b450391d1"},"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":"60e92938191e735ae1fac962c89f313afc5ea2f6577cc734019231a3c17117cb"},"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":"0f18b43087a33a6efff5ab18c29926997ad0809a08784ec031371410dc1d6587"},"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":"222f48eb06bd37708fbd4db9d750e1bbcb7f12fc6c986ab7ba2c556fbf6059d0"},"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":"5d6eb2e1cc0a4fd7f121473ecba66fa5e357c36e7568b628df87ec46a23b2c7e"},"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":"c4ab888dd8fc2414ab607f993d8dbecd73f7c9101621c671cd7bf55e0b0ca43a"},"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":"1739af9327bcc9b22b2124c04fee6f63230969af91ce41a73f51e0769a0e2248"},"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":"9288005d2943f176a759a6e35897a882f07b525374806b4f510610f1904033bd"},"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":"64d0530bcc71b98a7218829867f37054ab75db16dafdfbed8aea3ce8183b3766"},"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":"57e685145cf8a439ae3d1f0e03431e1265f4a1471d339d36d136e5aa359f9a45"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9f6fb6080995ecc1d21a1b188105b5d716e4309ec0d2671395bb6d9352655c48"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1369ba63d04369be14f8fe3167386ab15ab992d4a1fb736bcbe285c646ee0cb0"},"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":"053d4ec2529e233bbe448701415ceb455c9235be2ef746e1fc285f48520ece67"},"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":"62bfd137916e34b1abb2a6f25d2221c16faa39c29870ffa329c9004e807e80a0"},"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":"18ec4ed0bd2bac329cb625702ed16ecbec635e430bb61f4e74bd41be0b33ef67"},"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":"1062b43faa77876bd75bae25e005f4e394e38cf9d4ea60f15a2659d7f7b2f53f"},"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":"3efbe9cff05d09496a5cb5ac611bd782f6335a568cd29cfc9f67e56cf6b63e60"},"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":"be1eae44b61d1951b6cba9fd6148610fdf3d1d1da4c81f861b678f0f9a45a98c"},"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":"ab8d83539c5ebe567cb6deae98d392d6617f9ea4001a34a9a21fb3f393c0be8f"},"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":"f76421819bfc890753c4a7fdfb68fa3a5a5e5d2327332160aeb565e47e17e84f"},"taxa":[{"id":"CWE-89","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":"f3a8fcde619fc60dfda867d9d970a81dc689d0cf43fb401f721a0eda954f7a20"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"c41352d6403a5c4dbb90eda59af154990f7575d7caaafadf9d7e72d80ebc7400"},"taxa":[{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"8554f30d4d6ebd886a47073424365549862d763263717653a594d796c0d6d405"},"taxa":[{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"2cde846f8a57887b8cb9350857b19fabfedf0895dbcf59fdeb1acae1d8395864"},"taxa":[{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"fa3a859646e9f3c8f6d95f99a0c66c262b1abbcefbfbcc8901eb9fd9bde34bd3"},"taxa":[{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"2ec99dbe82543c5a5a2bb33dd888e9b2bd1466ac38773e2f4f5e248430286a3d"},"taxa":[{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"054ceb4704058393c10af7461745f018baa8f1de51d6faa3e6981c602fde559e"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1bf46d0d12bee1b4fa715970afdb328fcf1b0ae3cd21516d42bfcecdd8f5dce0"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d873ca42db065a801e241c9fc253af392581d3570066fe33f57d1c14031cc247"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"451effddf32051435cc6f467458d41a7eb7d9eb3c7304c8616381fe2233ce1a3"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1d1b48ddf5493f93666fdfb3159ecdfbbdae46d24f599fbc9db6b00319772edb"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f25a6b8a7d09ac8bd4335ba2ac8ce816bf852dee5528dfdc2d48f9cae75cdb73"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dec5ee858dc29af7ac8efebb319d39e762f55e717a494e7601784eb1473a4b51"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e6137c121aa49dc2b0bc57288da231f54fbf5a1dff2e68686092612d6b743dc3"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"439f76d9033eefcfd43488ce06417b204181fc28482f69124917e0fd659879d5"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"87cd750a7790a8fd4c7f5166410722c33937e63a401766cabfa69f8e76cfd099"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"257d577f5bf5cd9106f5350441f34145ab1da8e7ade991fab549b960453f0af2"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1bf22d2ddfba9b9c6d0525762bb83b1720d7f4a8912ab29fcf41b4eb9ba70db1"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"65f5065c10eab7766db8e2651332127555213a8bc062a985973d26caf4b7fa61"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"39d6cac2c191dd81654f19be94ab1dca7067ea27f7fee5a820813d11d7b189d0"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"16adc557f0ffda9dc654192ee8255b980c20c940c5be6c78d919786b7c8f2616"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb53f4e443d99715244a85d5dd826da5cfa0ef685081e790912785e3531ad859"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7b578a8ba04d4818a9bab3ccb65c085de3c47aa190f1cd396f3ff0a4e51269c5"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fbb0da52e4bb8cb407bd90e32e741603173ee28404e638fcebd4d306e942105b"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"62feb4037491ba574a4d01b19de1bd86ea47114d4db3d1235950abedbe3355a3"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ac77d542f6b34323ec25c9128a5e96f3c981bb58b35e073fa4b3072c414cdd1b"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0746639bab2204311ffcdac58e7a9f3c9ddc8fecbfba6737b1b4e9718d5eaad9"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6daadafb819723e6f82fdf0be679539a341dd66048f71ac2a4060a44fbb546ac"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a943daa94a28674e6a8387ff80e0bdb9c193f1bd12f6f469e1519bac67f53597"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5f01404d327b6a5ba7cf1a68b1222774d4249d2402da3b93cc483382a1a1ff33"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b129d31cce0557013b1ebf1211514e574a98cf17078e0ec381eb8af18841535"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"92a201d2ab03d21758c912791f53bf5504de2c17358cb3018aca09f90166dd61"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ebaf8fe7a8f5e55319f31cdd55e9f1ea298ea6cecd4ca8db560faf25ac90f28e"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bdd8825a3ffe962bf7f0dab62e4f8217e73ed2d106ad6f08c9dfe2b960d93ed4"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2e0210c11541fe3794e2c36c6b589113d64ff8eb52164b84b124082f5e48339f"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cd1501195c974f8c5c2a7fb85119993c50d9e234270209f7c5b9a3d2d3b4ac38"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8ebde689bb70604bcf477f7cb9b923764a8bb6661dd97472fbca69d484b37c4a"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f34ad2576bc15e901428c38cd4037e563625d7f240c54e9e0352e5a52f87ce18"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"588c47e83592f25ac558f98083cd03e0060e2a2d9a0d063d2b5ef41c4f72eee3"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"79b6e187fa3af999c6613af668303646841c51275bbd42adb355ca8e54ad58ee"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"69098942d44a3098d4ca721077e0accc23f19a3bb71ffd58b86bca54f62a8915"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7d9256b51dec8bf08452e05a4dda4baca2e406475b3f2ce3fd20c39fb023fe3c"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f9c6e64761127ef14f66c1a7a1befd3674561c0ec58fdaf964709233db26d7fc"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"91054d03598062fa82fa67176031d48389e15c169392030945e583b254061dcc"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8d651dbe7998655c82de11981ae1fa51dd1f9f360b54ed65ece359466d13cc09"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cdf37022513b83cfe775cb85786f7226fef8e13ea6659fd15b463d3c673846a7"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d219b61042041ebe97ee63c62204c462ff48f13cbf6e725b4b14f30ff505f682"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"99c862934728cf1073649f557f12f27fa138f733aa81878f9a47000ae0871705"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e1f5338e468db5ee1dd38886f49334406b4c37617ea9e395c1e7e49f818209ac"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b15172874f5d77a2a119c2a907daa0dc97a97f801ff58a23c0d1d35382b2f5bc"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e1b4f9f609fe1aab37f79d1b8a96cb28abd28a43a0ed0bfd8581e8f06d5b7187"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"683def2fdacbf808494583fa27f50951e6fb43c64ad76d5c1cf048b1b43fd5c3"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"589d36fca57a04da4d8c5f028117c9b731f7c354f61f8ee729f78b1763cfcdb1"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"37ce9b981c131b8dac3d1f051f03e7797b2e0de41fbea088f0c7259e5131d504"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c72df90c973401dcbb8e0a6dd7af0215f020586c970ab12e490d7a2b050c7db6"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"155776174de03666f6541a06b3c87588780a1c6697bc7fab2ffc5310ea56e406"}},{"ruleId":"D34","level":"note","message":{"text":"Further orphaned files (smaller): 26 of 534 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 100 lines or more, excluding tests, vendored, generated and example/demo trees, largest first). 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 largest first: src/modules/Elsa.Workflows.Core/Activities/Flowchart/Models/FlowGraph.cs, src/modules/Elsa.Workflows.Api/Services/StaticWorkflowDefinitionLinker.cs, src/modules/Elsa.Expressions.JavaScript/Providers/CommonFunctionsDefinitionProvider.cs (and 23 more). 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":"D35","level":"warning","message":{"text":"Change coupling: ElsaDistributedLockHealthCheck.cs \u2194 ElsaWorkflowPersistenceHealthCheck.cs: \u0060src/modules/Elsa.Workflows.Runtime/HealthChecks/ElsaDistributedLockHealthCheck.cs\u0060 and \u0060src/modules/Elsa.Workflows.Runtime/HealthChecks/ElsaWorkflowPersistenceHealthCheck.cs\u0060 change together 60% of the time (6 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well). They sit in the same directory, and in this ecosystem sibling files there normally share one namespace/package \u2014 so a direct reference between them needs no import and this pass cannot see whether one exists. Read the pair before acting: if one file only DECLARES what the other consumes (a constants/types file beside its user), the co-change is definitional and the question is whether the split earns its keep; if they duplicate structure, extract the common part into a shared function or type they both call; if neither holds, the coupling is hidden and worth breaking."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Runtime/HealthChecks/ElsaDistributedLockHealthCheck.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8aae26c300c57294f5d6639b7eca52c7be92ff184c078fdf87ff753b9ffcd41"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: EvictWorkflowDefinitionServiceCache.cs \u2194 WorkflowDefinitionPublisher.cs: \u0060src/modules/Elsa.Workflows.Management/Handlers/Notifications/EvictWorkflowDefinitionServiceCache.cs\u0060 and \u0060src/modules/Elsa.Workflows.Management/Services/WorkflowDefinitionPublisher.cs\u0060 change together 60% of the time (6 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well). They sit in different directories, but in this ecosystem the namespace is declared in the FILE, not by the folder \u2014 so the two may well share one namespace and reference each other with no import for this pass to see. Read the pair before acting: if one derives from or overrides the other, the dependency is explicit in the type declaration and the co-change is definitional; if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE and the thing to add is a comment saying so; if they simply belong together, co-locate them; if none of these holds, the coupling is hidden and worth breaking."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Handlers/Notifications/EvictWorkflowDefinitionServiceCache.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c42725d1d66308ac124bc6a70f7ca278cd101e88873ce2708ded26444bb49ce"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: EvictWorkflowDefinitionServiceCache.cs \u2194 RefreshActivityRegistry.cs: \u0060src/modules/Elsa.Workflows.Management/Handlers/Notifications/EvictWorkflowDefinitionServiceCache.cs\u0060 and \u0060src/modules/Elsa.Workflows.Management/Handlers/Notifications/RefreshActivityRegistry.cs\u0060 change together 50% of the time (5 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well). They sit in the same directory, and in this ecosystem sibling files there normally share one namespace/package \u2014 so a direct reference between them needs no import and this pass cannot see whether one exists. Read the pair before acting: if one file only DECLARES what the other consumes (a constants/types file beside its user), the co-change is definitional and the question is whether the split earns its keep; if they duplicate structure, extract the common part into a shared function or type they both call; if neither holds, the coupling is hidden and worth breaking."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/modules/Elsa.Workflows.Management/Handlers/Notifications/EvictWorkflowDefinitionServiceCache.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"70f6d683dcaa79b62c4a47cae162b3966a30562894e6d30f81269abe7bb89d26"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"90f83b4fa27db32740afe9540c905f3c0499caed87f61049a8a903ecc95b41c3"}},{"ruleId":"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":"0752d0df7434000fcabf1048e2de30a7a1a8b982b3db9a19898c4dec199856b4"}},{"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":"d657599f6f99da1927d3377533dfc0888b34c4d84aa7d5579841fd72d0e39bce"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e8409846c0de59b578c47b32c5e3c310de1d42e69c68f454869aba9194b80c1c"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"de08aee1f4e0cd932d677fca3ee406e6cf42c7bc8c85dd714e82293aa87bb657"}},{"ruleId":"D40","level":"note","message":{"text":"No network policy: No Kubernetes NetworkPolicy (or Cilium policy) found. Without one, every pod can talk to every other pod and reach out to the internet by default. Add a default-deny policy and open only the flows you need."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"295828650a2aaa1b03ae9b32ae6843a0c38011e5a70b1926442c4fa7187de5f0"}},{"ruleId":"D41","level":"note","message":{"text":"No seccomp profile: Workloads do not set a seccomp profile (RuntimeDefault or a Localhost profile). Seccomp blocks the syscalls a container never needs, shrinking the kernel attack surface a container escape would use."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3f418e9f76c3ac90484e0e94a454bfe9b08e914e1cdd218e1fc9e3b261a3bf6e"}},{"ruleId":"D41","level":"note","message":{"text":"No AppArmor/SELinux confinement: Workloads declare no AppArmor or SELinux profile. A mandatory-access-control profile confines what a compromised container can touch on the host, complementing seccomp\u0027s syscall filter."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e83fbc31033373d6c51983ed230eb4ba61f7775ed02afb30f5fc1840bde01d4f"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1032","guid":"5f21e517-68aa-a650-9a25-5771ef024637","name":"OWASP Top Ten \u2014 Security Misconfiguration category","shortDescription":{"text":"OWASP Top Ten \u2014 Security Misconfiguration category"},"helpUri":"https://cwe.mitre.org/data/definitions/1032.html"},{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-16","guid":"659db3ea-affc-8453-8add-c1218fbfcb92","name":"Configuration","shortDescription":{"text":"Configuration"},"helpUri":"https://cwe.mitre.org/data/definitions/16.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"CWE-353","shortDescription":{"text":"CWE-353"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-732","guid":"1da27e8f-b330-7650-ab63-bd61953eae5d","name":"Incorrect Permission Assignment for Critical Resource","shortDescription":{"text":"Incorrect Permission Assignment for Critical Resource"},"helpUri":"https://cwe.mitre.org/data/definitions/732.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-829","guid":"13c33925-97fb-5a5e-b40c-56d328b8a4d7","name":"CWE-829","shortDescription":{"text":"CWE-829"},"helpUri":"https://cwe.mitre.org/data/definitions/829.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":133,"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."]}]}