{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D10","name":"Test Quality","shortDescription":{"text":"Test Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D10"},{"id":"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"]}]},{"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":"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":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D27","name":"Navigability","shortDescription":{"text":"Navigability"},"helpUri":"https://codehealth.canine.dev/dimensions/D27"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}]},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29"},{"id":"D31","name":"IaC \u0026 Container Security","shortDescription":{"text":"IaC \u0026 Container Security"},"helpUri":"https://codehealth.canine.dev/dimensions/D31"},{"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"]}]},{"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"]}]},{"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"]}]}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"DependencyInjectionExtensions.AddTracingExporters (cyclomatic 19): DependencyInjectionExtensions.AddTracingExporters has cyclomatic complexity 19 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.OpenTelemetry/Extensions/DependencyInjectionExtensions.cs"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"571480450c1ec0f4cf9a4df446e9ea1c8ddab135219134912e27783b9b667383"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeExtensions.AddImplementationsAsTransient (cognitive 30): TypeExtensions.AddImplementationsAsTransient has cognitive complexity 30 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Core/Extensions/TypeExtensions.cs"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9cdd8a9023c25adc7d30e875ceab2d009719d226ebbd31acb90e553f8d84d84"}},{"ruleId":"D2","level":"warning","message":{"text":"ApiVersionDescriptionExtensions.BuildDescription (cognitive 26): ApiVersionDescriptionExtensions.BuildDescription has cognitive complexity 26 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.OpenApi/AspnetOpenApi/Extensions/ApiVersionDescriptionExtensions.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"807eca426bd8bc9ccf0a4ae8c887d2dac19f9078034de8a746adbadc20b8d1e3"}},{"ruleId":"D2","level":"warning","message":{"text":"Index.OnPost (cognitive 23): Index.OnPost has cognitive complexity 23 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Identity/FoodDelivery.Services.Identity.Api/Pages/Account/Login/Index.cshtml.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"af0ed4c801ca15969d7d6f64da89fce49f0b05b7ea6cac11800279728eea9243"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeExtensions: TooManyMethods \u2014 457 lines, 61 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Core/Extensions/TypeExtensions.cs"},"region":{"startLine":0}}}],"partialFingerprints":{"codehealthFindingId/v1":"772bca830638f0dba128c8e25fd95cba06b6004050b11260b946e9856b2b422d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): src/Services/Customers/FoodDelivery.Services.Customers/Shared/Extensions/HostApplicationBuilderExtensions/InfrastructureExtensions.cs:37-70 | src/Services/Orders/FoodDelivery.Services.Orders/Shared/Extensions/HostApplicationBuilderExtensions/InfrastructureExtensions.cs:28-57"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Customers/FoodDelivery.Services.Customers/Shared/Extensions/HostApplicationBuilderExtensions/InfrastructureExtensions.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8b37575bcfda939447dd05fbfc1f7f5b01d5bb56b9b45652506689fcd9110e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): src/Services/Catalogs/FoodDelivery.Services.Catalogs/Shared/Extensions/HostApplicationBuilderExtensions/InfrastructureExtensions.cs:68-78 | src/Services/Customers/FoodDelivery.Services.Customers/Shared/Extensions/HostApplicationBuilderExtensions/InfrastructureExtensions.cs:76-103"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Catalogs/FoodDelivery.Services.Catalogs/Shared/Extensions/HostApplicationBuilderExtensions/InfrastructureExtensions.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"56a7ee788531f7105d82624f20781ba22d77043926cafa9dca0fba619fd6f283"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): src/BuildingBlocks/BuildingBlocks.OpenApi/AspnetOpenApi/Extensions/WebApplicationExtensions.cs:20-45 | src/BuildingBlocks/BuildingBlocks.OpenApi/Swashbuckle/Extensions/WebApplicationExtensions.cs:20-44"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.OpenApi/AspnetOpenApi/Extensions/WebApplicationExtensions.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f25c6133c5302b04d1388c6b419d28ef0f5709a741811f5febee2f6c44d1ffb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): src/BuildingBlocks/BuildingBlocks.Core/Commands/Diagnostics/CommandHandlerMetrics.cs:57-75 | src/BuildingBlocks/BuildingBlocks.Core/Commands/Diagnostics/CommandHandlerMetrics.cs:93-111 | src/BuildingBlocks/BuildingBlocks.Core/Commands/Diagnostics/CommandHandlerMetrics.cs:134-152"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Core/Commands/Diagnostics/CommandHandlerMetrics.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"d176968dcf26db29ceb3afd566e89bd210a088559a2702278110f8dbda5be1f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): src/BuildingBlocks/BuildingBlocks.Core/Queries/Diagnostics/QueryHandlerMetrics.cs:57-75 | src/BuildingBlocks/BuildingBlocks.Core/Queries/Diagnostics/QueryHandlerMetrics.cs:93-111 | src/BuildingBlocks/BuildingBlocks.Core/Queries/Diagnostics/QueryHandlerMetrics.cs:134-152"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Core/Queries/Diagnostics/QueryHandlerMetrics.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b894fbb1216f9a567a30b1c1b2fb67165868448fcd741f8abbd3ea7ab223918"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/BuildingBlocks/BuildingBlocks.Core/Web/Extensions/QueryCollectionExtensions.cs:14-32 | src/BuildingBlocks/BuildingBlocks.Web/Extensions/QueryCollectionExtensions.cs:14-32"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Core/Web/Extensions/QueryCollectionExtensions.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e6c96dad75a4f06c7795cac1c984f4134e4e42dac00930c48e4642ad7da0c15"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/BuildingBlocks/BuildingBlocks.Core/Types/Extensions/StringExtensions.cs:39-56 | src/BuildingBlocks/BuildingBlocks.Web/Extensions/QueryCollectionExtensions.cs:110-127"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Core/Types/Extensions/StringExtensions.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"133a95981ee00c798f6975a25b61605c9574de32bc00bab31a22f3985b3b52ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/BuildingBlocks/BuildingBlocks.Core/Persistence/EfCore/StronglyTypedIdValueConverterSelector.cs:35-50 | src/BuildingBlocks/BuildingBlocks.Core/Persistence/EfCore/StronglyTypedIdValueConverterSelector.cs:53-67"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Core/Persistence/EfCore/StronglyTypedIdValueConverterSelector.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"a97885b62f68d9e8cdf73e9d97b7b1b8fb59c41ba0651c82c071654f3c6ab176"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/BuildingBlocks/BuildingBlocks.AspireIntegrations/AspireDashBoard/AspireDashboardHealthCheck.cs:13-27 | src/BuildingBlocks/BuildingBlocks.AspireIntegrations/Kibana/KibanaHealthCheck.cs:12-25"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.AspireIntegrations/AspireDashBoard/AspireDashboardHealthCheck.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"097364d1d491139143895bf4cab621aebe39d2eb4516b8e68aca93178d27d40b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/BuildingBlocks/BuildingBlocks.Web/ProblemDetail/DefaultExceptionHandler.cs:71-85 | src/BuildingBlocks/BuildingBlocks.Web/ProblemDetail/ProblemDetailsService.cs:83-97"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Web/ProblemDetail/DefaultExceptionHandler.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf16de2e4a89dea440589eba2cf59ed17ad75a893d06cafeaf96caa868f9884c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/Services/Customers/FoodDelivery.Services.Customers/Customers/Features/CreatingCustomer/v1/Events/Domain/CustomerCreated.cs:83-95 | src/Services/Customers/FoodDelivery.Services.Customers/Customers/Features/UpdatingCustomer/v1/Events/Domain/CustomerUpdated.cs:66-78"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Customers/FoodDelivery.Services.Customers/Customers/Features/CreatingCustomer/v1/Events/Domain/CustomerCreated.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"e04543753630ea21d14b218546113712a50830194f331472558f51563c8b16b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/BuildingBlocks/BuildingBlocks.Core/Commands/Diagnostics/CommandHandlerMetrics.cs:39-50 | src/BuildingBlocks/BuildingBlocks.Core/Queries/Diagnostics/QueryHandlerMetrics.cs:39-50"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Core/Commands/Diagnostics/CommandHandlerMetrics.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7867f93410ad7532a7fc97e5e85d0a1c7391022272f45948d545e3e49a016c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/Services/Customers/FoodDelivery.Services.Customers/Customers/Features/UpdatingCustomer/v1/Events/Internal/Mongo/UpdateCustomerRead.cs:67-78 | src/Services/Customers/FoodDelivery.Services.Customers/Customers/Features/UpdatingCustomer/v1/UpdateCustomer.cs:64-75"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Customers/FoodDelivery.Services.Customers/Customers/Features/UpdatingCustomer/v1/Events/Internal/Mongo/UpdateCustomerRead.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c970002895a05f2551f40950260fa960aecabb573a87ded59b69b9873c3d4ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/Services/Catalogs/FoodDelivery.Services.Catalogs/Products/ProductEventMapper.cs:22-31 | src/Services/Catalogs/FoodDelivery.Services.Catalogs/Products/ProductEventMapper.cs:42-51"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Catalogs/FoodDelivery.Services.Catalogs/Products/ProductEventMapper.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"00aea441efa13b7e62cd726524f68a106564067d2801b4e9a7424ab791882490"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/Services/Catalogs/FoodDelivery.Services.Catalogs/Products/Features/CreatingProduct/v1/CreateProduct.cs:45-50 | src/Services/Catalogs/FoodDelivery.Services.Catalogs/Products/Features/UpdatingProduct/v1/UpdateProduct.cs:43-48"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Catalogs/FoodDelivery.Services.Catalogs/Products/Features/CreatingProduct/v1/CreateProduct.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d3eb9f79fa2e425259d549a6d8db1e3d137148b5a5bbbd4906ae9afa9c2f873"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): src/Services/Catalogs/FoodDelivery.Services.Catalogs/Shared/Extensions/HostApplicationBuilderExtensions/InfrastructureExtensions.cs:82-86 | src/Services/Customers/FoodDelivery.Services.Customers/Shared/Extensions/HostApplicationBuilderExtensions/InfrastructureExtensions.cs:107-111 | src/Services/Identity/FoodDelivery.Services.Identity/Shared/Extensions/HostApplicationBuilderExtensions/InfrastructureExtensions.cs:59-63 | src/Services/Orders/FoodDelivery.Services.Orders/Shared/Extensions/HostApplicationBuilderExtensions/InfrastructureExtensions.cs:72-76"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Catalogs/FoodDelivery.Services.Catalogs/Shared/Extensions/HostApplicationBuilderExtensions/InfrastructureExtensions.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4a3051b496e13377b54689931e8c75ea59b17504396acca2085c5c6920a2531"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project BuildingBlocks.Persistence.EventStoreDB: BuildingBlocks.Persistence.EventStoreDB has instability 1.00 with 0 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e6a62e1f6b5cb412dc3725bc94475d67501e7e2fe33797f8d7679b34555336e4"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project BuildingBlocks.Persistence.Marten: BuildingBlocks.Persistence.Marten has instability 1.00 with 0 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"093d61871ccaa500357212726146c16c038c293bc37110805081d07df295eebb"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.AspireIntegrations: BuildingBlocks.AspireIntegrations: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9a078ebf877d779080ed713ae303442af9842c883cda68201f7d503b123c1cf2"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.OpenTelemetry: BuildingBlocks.OpenTelemetry: abstractness 0.00, instability 0.05, distance 0.95 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e18ab18c05b6d78ead551b8984c0b42a1f0076af28fee86e9c58c945f2ec0f6e"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.Web: BuildingBlocks.Web: abstractness 0.00, instability 0.05, distance 0.95 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d11cfaa030d49c8527818f474e1d038c7125a727dac852be23e73e442e8a00db"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.HealthCheck: BuildingBlocks.HealthCheck: abstractness 0.00, instability 0.05, distance 0.95 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"16b3bc24d3b42a482e8b66f8fd29670a2957eb1457b81db04e8842bee4a7af66"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.Resiliency: BuildingBlocks.Resiliency: abstractness 0.00, instability 0.05, distance 0.95 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"aba2e1d384734008c3df3e64e12cbf67f27bfa7e8633bd52f726b3d1bd91cf1d"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.Validation: BuildingBlocks.Validation: abstractness 0.00, instability 0.06, distance 0.94 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bcaf996877db2e1c4a8a877276a3f1f4302416d19040aade927c0103b1553604"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.SerilogLogging: BuildingBlocks.SerilogLogging: abstractness 0.00, instability 0.06, distance 0.94 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"694bfcc47f35a4a06e5c2d13d08456dc04f3936a6cb62a0f5a2d48a6f877c595"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.Persistence.Mongo: BuildingBlocks.Persistence.Mongo: abstractness 0.00, instability 0.07, distance 0.93 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6a14b0fb1baec762dd7c75c658544b858e0f5b698ed7028316b6c68ead44fb5e"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.OpenApi: BuildingBlocks.OpenApi: abstractness 0.00, instability 0.07, distance 0.93 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e997e0695d7c5d36b8c54afb9c12be2497a4fde8f9161fa7d12016be90e71f19"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.Integration.MassTransit: BuildingBlocks.Integration.MassTransit: abstractness 0.00, instability 0.09, distance 0.91 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6eb13474b20114ff27b5d4452a41219c1feaa6fa17f2663f9b18320c98197b7f"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.Messaging.Persistence.Postgres: BuildingBlocks.Messaging.Persistence.Postgres: abstractness 0.00, instability 0.10, distance 0.90 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a4f586c569c7bf87dec0fd509ba0b694a826d4d343495c6612c42e4ad36c339b"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.Core: BuildingBlocks.Core: abstractness 0.13, instability 0.02, distance 0.86 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9edc742203dbcd1aea8d8c3cb08c5807fb2b2718697a8eee5e8d293dd7ad19a3"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.Persistence.EfCore.Postgres: BuildingBlocks.Persistence.EfCore.Postgres: abstractness 0.13, instability 0.06, distance 0.82 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0c09b8d12c605141e040d9e2ca5fc89a0cc382314b7d8363e0f3cad8cd9adf25"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: FoodDelivery.Services.Shared: FoodDelivery.Services.Shared: abstractness 0.00, instability 0.19, distance 0.81 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"76c78716691868cc7df9036bd9e98bf3b18ec3b3564c8e04233bedd930d599f5"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.Security: BuildingBlocks.Security: abstractness 0.11, instability 0.09, distance 0.81 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b6c6790d8309b7e00e0b918a390ddcb8d2360883b143ecbc9d8f5cd09e63b5ba"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: BuildingBlocks.Email: BuildingBlocks.Email: abstractness 0.13, instability 0.07, distance 0.80 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d37c83d27eddab95435824e8143397ce5e0cb183e1d9131cab1b61924c61dff1"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): Test1: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ApiGateway/FoodDelivery.ApiGateway.TestShared/UnitTest1.cs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3d74798b2e4ae21591e22a69c1c48204f7e650ff212b9a0cd7abb17e7b069e"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): Test1: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ApiGateway/FoodDelivery.ApiGateway.UnitTests/UnitTest1.cs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fea5adf840913302985ebbeb04e2a5e8518c95ab9bc22b33e3b8f6e7d30d811"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: validate_service_dependencies: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Services/Catalogs/FoodDelivery.Services.Catalogs.DependencyTests/DependencyTests.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"13174cd934f8ed46571bc86611009da75bd6d357b48e87eb5793970f22fcff7b"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): Test1: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Services/Catalogs/FoodDelivery.Services.Catalogs.LoadTests/UnitTest1.cs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c8ee39e7bf07d573413adab03f83397ef695a7b224a9b7a2fbc33d93d223e32"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: validate_service_dependencies: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Services/Customers/FoodDelivery.Services.Customers.DependencyTests/DependencyTests.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"d59eedd79dba73a56142852cd7b9c49bf4fcee42585367daa44a6d894dea10e1"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: can_create_new_mongo_customer_read_model_in_the_mongodb: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Services/Customers/FoodDelivery.Services.Customers.IntegrationTests/Customers/Features/CreatingCustomer/v1/CreateCustomerTests.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"116a23dba3d2bb2d8c585aecf5282ed1e7e591099d76af60469de7db3316a52a"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: should_create_new_customer_in_postgres_write_db_when_after_consuming_message: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Services/Customers/FoodDelivery.Services.Customers.IntegrationTests/Users/Features/RegisteringUser/v1/Events/External/UserRegisteredTests.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"392255f051d527b837354be7d661bf05c5e4283b4b4b3146cf80e6e8ad4b59b2"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: should_create_new_mongo_customer_read_model_in_the_mongodb_after_consuming_message: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Services/Customers/FoodDelivery.Services.Customers.IntegrationTests/Users/Features/RegisteringUser/v1/Events/External/UserRegisteredTests.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"5618b43646eb21c98f11f203164b6a80dffe742a99548637e919dace8bc76222"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: validate_service_dependencies: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Services/Identity/FoodDelivery.Services.Identity.DependencyTests/DependencyTests.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a9df13adc895da4f544b3ef2050a8716b9171f626f03f62d1e9e07da6d4f3d"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): Test1: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Services/Identity/FoodDelivery.Services.Identity.EndToEndTests/UnitTest1.cs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c6491d37dde75dd02ccfadff4778e4dfc6abd8feabff915da4daf60d5f901e6"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): Test1: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Services/Identity/FoodDelivery.Services.Identity.TestShared/UnitTest1.cs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"4888bce510593a188ebe84d10e4a966f2bd68bcdd8e9f462a57ff4d07fedf1b9"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): Test1: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Services/Identity/FoodDelivery.Services.Identity.UnitTests/Tests.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b03d5b9aaf0223bfb24cd71ba295b3a787cbc5a861d7396b9ebf830b17e9296"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): category_trait_test: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Shared/Tests.Shared/XunitCategories/Tests.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"d20306dc22a8122e4f752ae186aac69b113c3a7fb18545c34f7e91787720de28"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): feature_trait_test: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Shared/Tests.Shared/XunitCategories/Tests.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b3eddf4ae8d5f591077c1e165cb500e34a49c32508c048feba6ad4f9754269"}},{"ruleId":"D10","level":"error","message":{"text":"No assertions (empty test): bug_trait_test: Test method has an empty body \u2014 it asserts nothing and exercises no code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Shared/Tests.Shared/XunitCategories/Tests.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"c937bbc22f4a8dfbe3efa162d8b505a176cb896316207bf0ef57187b54385eb3"}},{"ruleId":"D13","level":"error","message":{"text":"Leaked secret: jwt: jwt detected."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"_httpclients/http-client.private.env.json"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"d011262eead9e975dbf92f3ec0c883490d670d07435f441adb8af34cc1a92850"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 57 significant file(s) lose their only recent owner (largest: src/BuildingBlocks/BuildingBlocks.OpenTelemetry/Extensions/DependencyInjectionExtensions.cs). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bd80bfc43fc92b863a7c1f5d4b19f781116f5e7b551c3314c3dd68e406d1f587"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Bffs/Spa.Bff/FoodDelivery.Spa.Bff/Extensions/HostApplicationBuilderExtensions/AuthenticationExtensions.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"c322b9524ca6786c4a00ffea09c58e9f05f8de08d54cac84e5c23e853477b578"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/BlazorWebApp/FoodDelivery.BlazorWebApp/Extensions/WebApplicationBuilderExtensions/AuthenticationExtensions.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"de0d1173db3946d2b22207342a34a75716d4ccda06d9f84b24c652a1e0b78ab1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Shared/Tests.Shared/Factory/CustomWebApplicationFactory.cs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd5402b955def5c0db4297571b1b2f40eb49582f062b4d869ff58543d7fb1287"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable EXTEXP0018"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Caching/Extensions/DependencyInjectionExtensions.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf3ccf3dc083adf3e04bc0cd6805e716cc2d9a7f09620bbeb3eafd2b8245c7f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: executing action and saving entry to inbox should be in the same transaction. because it is possible before the message is saved to the Inbox table the process crashes, broker redelivers the message and consumer will re-run the logic again (duplicate) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: PROJ-123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Core/Messages/MessagePersistence/MessagePersistenceService.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"d23ac05e48dec927f5b5b73d493bd5725f726af2db7d710e6beb51bba31bce1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // var userId = GetCurrentUser(); // TODO: Get current user \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: PROJ-123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Core/Persistence/EfCore/Interceptors/AuditInterceptor.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"edf1598d9edb9ea6ceedc5296c39453af98091483dbdc83bb610b3c551850a9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: instead of \u0060next.Send\u0060 and using consumers we call internal event bus publish in last pipeline for all auto registered consumers for all message handlers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: PROJ-123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Integration.MassTransit/MessageHandlerConsumerFilter.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"468b4820283b62c4edaa2c4f72c163c25c129697f093180de0ebd87715126b0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: problem with registering internal validators \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: PROJ-123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.Validation/Extensions/DependencyInjectionExtensions.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"29a694725b56f29a0d405029ff578afc3458563fb42b323f6a9af33af684817f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Update Identity user with new customer changes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: PROJ-123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Customers/FoodDelivery.Services.Customers/Customers/Features/UpdatingCustomer/v1/UpdateCustomer.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"79f9b791c6b19ad9c2a18e3e024c73a2f2ebf7bc0ddcfe6e723822ec689ffcac"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Customers/FoodDelivery.Services.Customers/RestockSubscriptions/Features/DeletingRestockSubscriptionsByTime/v1/DeleteRestockSubscriptionsByTime.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9b3870e4a646f46279b00be1e338dcda75391ca5a9046ce50e8f05eb3d3480f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Shared/Tests.Shared/Fixtures/Tests/PostgresContainerFixtureTests.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5eb508d51fb7701898eebbe69795548012f29e30301e2cecce8ac44f5379979"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: use the parsed scope value in the display? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: PROJ-123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Identity/FoodDelivery.Services.Identity.Api/Pages/Device/Index.cshtml.cs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed130b783d9c257004c98aad945ed549e9b2cf5b12704ee32edbbd4a8fced495"}},{"ruleId":"D17","level":"warning","message":{"text":"BareSuppressMessage: System.Diagnostics.CodeAnalysis.SuppressMessage"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Identity/FoodDelivery.Services.Identity.Api/Pages/ExternalLogin/Callback.cshtml.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fa055078957e8c9e04a9e401f4b8be0b632c3514c7721021977cad987d9cf7b"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable 1591"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Identity/FoodDelivery.Services.Identity.Api/Pages/Telemetry.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"20798017a4939a297d1017de62d920b401ca987cbc79c700ddd78df10e99a028"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Complete order domain model \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: PROJ-123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Orders/FoodDelivery.Services.Orders/Orders/Models/Order.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"30363571e2dada8dc8df4e34db07f85713ac71cdb264fc038902fb398f21d959"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Web could use this in E2E test for running another service during our test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: PROJ-123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Shared/Tests.Shared/Factory/CustomWebApplicationFactory.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"890fb9b5fee082d3f54a9dae72819199a6ebd38d39f1b66ae9f98703d837699e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // //// TODO: Breaking change in the testcontainer upgrade \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: PROJ-123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Shared/Tests.Shared/Fixtures/SharedFixture.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c4b88a2f4d55c84b64c3a38f61c4ab09c57bb9bdffb70b8e6aea3eb0f861a6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Shared/Tests.Shared/Fixtures/SharedFixture.cs"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"201b0b7ec6019f3eb99c059dbc9fe086cb4f32a16b4cff265a3fb79415971d5d"}},{"ruleId":"D18","level":"warning","message":{"text":"Monorepo: only 1 of 2 solutions was scored: This repository contains 2 .NET solutions, but a scan analyzes ONE. Every score, lens, and finding here reflects only \u0060food-delivery-microservices.slnx\u0060 \u2014 the other 1 (\u0060src/BuildingBlocks/BuildingBlocks.Abstractions/BuildingBlocks.Abstractions.sln\u0060) were not analyzed and are not represented in the headline. To cover them, scan each solution as its own target and group them in a Solution or Product for a portfolio roll-up. If a secondary solution is an archived or vendored tree, declare it \u2014 \u0060.gitattributes\u0060 (\u0060path/** linguist-vendored\u0060) or \u0060.editorconfig\u0060 (\u0060[path/**] generated_code = true\u0060) \u2014 to exclude it from discovery the same way generated code is."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a714c749a7ed0270f25ef54f0d77846abefb01ce5214d0fe8c64e4324d302faf"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: BuildingBlocks.Caching.AzureRedis: \u0060BuildingBlocks.Caching.AzureRedis\u0060 contributes only 0 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/BuildingBlocks/BuildingBlocks.Caching.AzureRedis/BuildingBlocks.Caching.AzureRedis.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eb749295a419c27d3e237df29154b69d658920d882abf0bf68ba7d55b3dc711"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: BuildingBlocks.Persistence.EfCore.AzureCosmosDB: \u0060BuildingBlocks.Persistence.EfCore.AzureCosmosDB\u0060 contributes only 0 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/BuildingBlocks/BuildingBlocks.Persistence.EfCore.AzureCosmosDB/BuildingBlocks.Persistence.EfCore.AzureCosmosDB.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"824b9b9c600fce9da491307ce9adea0d2266b9c7f521a0f1a1f640a39f54bb57"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: BuildingBlocks.Persistence.EfCore.AzurePostgres: \u0060BuildingBlocks.Persistence.EfCore.AzurePostgres\u0060 contributes only 2 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/BuildingBlocks/BuildingBlocks.Persistence.EfCore.AzurePostgres/BuildingBlocks.Persistence.EfCore.AzurePostgres.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e1aa6772736ee1b3d19487363ae2f80bd77ed3ffbdf02d7755d1ee8e92d311"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Billing.Api: \u0060FoodDelivery.Services.Billing.Api\u0060 contributes only 3 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/Services/Billing/FoodDelivery.Services.Billing.Api/FoodDelivery.Services.Billing.Api.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"43867affe3f1cf64d4ccec6519760c7ad4b36a33be729c321fe2715b93a0d5f5"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Billing: \u0060FoodDelivery.Services.Billing\u0060 contributes only 2 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/Services/Billing/FoodDelivery.Services.Billing/FoodDelivery.Services.Billing.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"008d4bc42fe2d9e13ace83f5863e96ce94e91cb2b1436199773f79185e7bbb83"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Carts.Api: \u0060FoodDelivery.Services.Carts.Api\u0060 contributes only 3 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/Services/Carts/FoodDelivery.Services.Carts.Api/FoodDelivery.Services.Carts.Api.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"81fa2a46488126c88e0c3359a3bc82adc00d5d458fab86e104d3dd11323aa79e"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Carts: \u0060FoodDelivery.Services.Carts\u0060 contributes only 2 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/Services/Carts/FoodDelivery.Services.Carts/FoodDelivery.Services.Carts.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aef0194af0e3d4f58dc346d500845bcc6b4b9b32d513b892116e81615ccd8581"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Checkouts.Api: \u0060FoodDelivery.Services.Checkouts.Api\u0060 contributes only 3 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/Services/Checkouts/FoodDelivery.Services.Checkouts.Api/FoodDelivery.Services.Checkouts.Api.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2960692fd6300362ae693d16bbc17c00335a3a41ae2637d30246b8bf31d10da"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Checkouts: \u0060FoodDelivery.Services.Checkouts\u0060 contributes only 2 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/Services/Checkouts/FoodDelivery.Services.Checkouts/FoodDelivery.Services.Checkouts.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9ce9c6446d0da760bbcf0126a53dcc3cb7dd0b78ebe205559e878d42bd0908f"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.GroceryStores.Api: \u0060FoodDelivery.Services.GroceryStores.Api\u0060 contributes only 3 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/Services/GroceryStores/FoodDelivery.Services.GroceryStores.Api/FoodDelivery.Services.GroceryStores.Api.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"313ab0457b36d8cee451dc83a86fa8c3151abcc7d023de6cfe332a3b5b34014f"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.GroceryStores: \u0060FoodDelivery.Services.GroceryStores\u0060 contributes only 2 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/Services/GroceryStores/FoodDelivery.Services.GroceryStores/FoodDelivery.Services.GroceryStores.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"360f1e9299746c56186c49b24fd71ae3da7fd688ab5447b87f5d7ab4777da7f2"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Pricing.Api: \u0060FoodDelivery.Services.Pricing.Api\u0060 contributes only 3 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/Services/Pricing/FoodDelivery.Services.Pricing.Api/FoodDelivery.Services.Pricing.Api.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0f93f8df294372dcd62c0fa9537034c54fa2fc41b4a8665b125a8e711fa6feb"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Pricing: \u0060FoodDelivery.Services.Pricing\u0060 contributes only 2 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/Services/Pricing/FoodDelivery.Services.Pricing/FoodDelivery.Services.Pricing.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"adf4dcdcf6afd4a5f299582f055cabe3267a052cd856a43c8b008e8cc6346eba"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Recommendations.Api: \u0060FoodDelivery.Services.Recommendations.Api\u0060 contributes only 3 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/Services/Recommendations/FoodDelivery.Services.Recommendations.Api/FoodDelivery.Services.Recommendations.Api.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4c92ccbbe0d2e218202537d8a56c6bf8c1d0f4d98d2bde7ae4cbe3f7cc6cbbe"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Recommendations: \u0060FoodDelivery.Services.Recommendations\u0060 contributes only 2 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/Services/Recommendations/FoodDelivery.Services.Recommendations/FoodDelivery.Services.Recommendations.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"49395ad2bf9845d2b26a650beb092f922827dbfc19b692cc8e669ff5805c57e5"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Restaurants.Api: \u0060FoodDelivery.Services.Restaurants.Api\u0060 contributes only 3 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/Services/Restaurants/FoodDelivery.Services.Restaurants.Api/FoodDelivery.Services.Restaurants.Api.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e12dbe2f07bb9926226361dcb9abc5a526011565acad0aa1020bb8844824304"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Restaurants: \u0060FoodDelivery.Services.Restaurants\u0060 contributes only 2 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/Services/Restaurants/FoodDelivery.Services.Restaurants/FoodDelivery.Services.Restaurants.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e105c6748586b8c99d11e6754dc841bb5d6c67185211c620ba5aa8da5f5b3b67"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Reviews.Api: \u0060FoodDelivery.Services.Reviews.Api\u0060 contributes only 3 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/Services/Reviews/FoodDelivery.Services.Reviews.Api/FoodDelivery.Services.Reviews.Api.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f797f993e4084ce947a2a01016d2398c44baa4534361b841eaf0622b8838cf39"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Reviews: \u0060FoodDelivery.Services.Reviews\u0060 contributes only 2 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/Services/Reviews/FoodDelivery.Services.Reviews/FoodDelivery.Services.Reviews.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a5e604afb7cf74f53910a92c3c6a337a41e16b20d78a7b15a168c171fb4be17"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Search.Api: \u0060FoodDelivery.Services.Search.Api\u0060 contributes only 3 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/Services/Search/FoodDelivery.Services.Search.Api/FoodDelivery.Services.Search.Api.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"866511636e356f66b8ea8227692b8bebc3aba020a7bc089794fde555807d34f0"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Search: \u0060FoodDelivery.Services.Search\u0060 contributes only 2 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/Services/Search/FoodDelivery.Services.Search/FoodDelivery.Services.Search.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb3453577e17bca5ac0887f522f903bc5e5c5f8bf95b1a18cae6a21658e69820"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Shippings.Api: \u0060FoodDelivery.Services.Shippings.Api\u0060 contributes only 3 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/Services/Shippings/FoodDelivery.Services.Shippings.Api/FoodDelivery.Services.Shippings.Api.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ae390f778bcd8212d16d580c3871c04a6ddf797e08054be92ca82b22f2cec1b"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: BuildingBlocks.Integration.MassTransit.IntegrationTests: \u0060BuildingBlocks.Integration.MassTransit.IntegrationTests\u0060 contributes only 9 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":"tests/BuildingBlocks/MassTransit/BuildingBlocks.Integration.MassTransit.IntegrationTests/BuildingBlocks.Integration.MassTransit.IntegrationTests.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd62f512750fb1f6948de46984f8d82b8315c12f1c16279313cedc4e3a25fd0b"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Catalogs.EndToEndTests: \u0060FoodDelivery.Services.Catalogs.EndToEndTests\u0060 contributes only 8 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":"tests/Services/Catalogs/FoodDelivery.Services.Catalogs.EndToEndTests/FoodDelivery.Services.Catalogs.EndToEndTests.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f19c3aabe548942a5675c8a85c3ad56ee29d7ba61d9e38c39bd6b05ccf78ebb"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Catalogs.IntegrationTests: \u0060FoodDelivery.Services.Catalogs.IntegrationTests\u0060 contributes only 8 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":"tests/Services/Catalogs/FoodDelivery.Services.Catalogs.IntegrationTests/FoodDelivery.Services.Catalogs.IntegrationTests.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e47eca3b35803c792a73ab7ac21957a2418cb7fd7c314bd386a7724a19d58d4a"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: FoodDelivery.Services.Customers.LoadTests: \u0060FoodDelivery.Services.Customers.LoadTests\u0060 contributes only 9 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":"tests/Services/Customers/FoodDelivery.Services.Customers.LoadTests/FoodDelivery.Services.Customers.LoadTests.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8febdc77457bb5c4b76c10f17dc74a70a3074cc367b4e0b637cc5181233567e9"}},{"ruleId":"D18","level":"note","message":{"text":"Thin analysable surface across projects: 10 project(s) carry only a thin slice of real code (e.g. \u0060FoodDelivery.ApiGateway.TestShared\u0060 with 15 significant line(s)). The mean analysable-surface weight is 58 %, lowering Solution Shape by about 3.3 point(s). Consolidate thin projects or grow them into substantial, well-scoped assemblies."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dd0b92fd965c2065080f16843920964ee00f7696ea03d87cdf61aed4cd2c746a"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found at common paths; consider documenting architectural decisions in Docs/ADL/ or similar."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D21","level":"note","message":{"text":"Inconsistent use of gerund (\u0027Getting\u0027) vs noun/verb (\u0027Get\u0027) in feature names. Other features in the codebase use the noun form (e.g., \u0027GetRestockSubscriptionById\u0027), but this feature uses the gerund \u0027Getting\u0027.: Rename \u0027Getting\u0027 to \u0027Get\u0027 to match the convention seen in \u0027GetRestockSubscriptionById\u0027 and \u0027GetAvailableStockById\u0027. (symbols: FoodDelivery.Services.Customers.RestockSubscriptions.Features.GettingRestockSubscriptionBySubscriptionId.v1.GetRestockSubscriptionBySubscriptionId, FoodDelivery.Services.Customers.RestockSubscriptions.Features.GettingRestockSubscriptionBySubscriptionId.v1.GetRestockSubscriptionBySubscriptionIdValidatorHandler)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4a8d6aab1687d93d46c1ba6485f6ae40ec4598e9633efd3c280757f8154ab5a0"}},{"ruleId":"D21","level":"note","message":{"text":"Inconsistent naming for the same feature. The directory and handler use \u0027Getting...\u0027, but the request class uses \u0027Get...\u0027.: Align all components of this feature to use the noun form \u0027Get\u0027 (e.g., \u0027GetRestockSubscriptionBySubscriptionId\u0027) to match other features like \u0027GetRestockSubscriptionById\u0027. (symbols: FoodDelivery.Services.Customers.RestockSubscriptions.Features.GettingRestockSubscriptionBySubscriptionId.v1.GetRestockSubscriptionBySubscriptionId, FoodDelivery.Services.Customers.RestockSubscriptions.Features.GettingRestockSubscriptionBySubscriptionId.v1.GetRestockSubscriptionBySubscriptionIdValidatorHandler)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6cb4dcf9e5472b54de79225b60f1fbbd500d6234a27441ffee1d4a448a704d89"}},{"ruleId":"D22","level":"warning","message":{"text":"Duplicate scheduling interfaces with overlapping responsibilities. ICommandBus and ICommandScheduler both expose ScheduleAsync for IInternalCommand. Additionally, IScheduler.ScheduleAsync accepts a generic ScheduleSerializedObject, while the others accept specific command types, creating confusion about which scheduler to use.: Consolidate scheduling into a single IScheduler interface. Remove ScheduleAsync from ICommandBus and ICommandScheduler, or unify them under a common IScheduler interface that handles all scheduling needs. (signatures: ICommandBus.ScheduleAsync(IInternalCommand, CancellationToken) | ICommandBus.ScheduleAsync(IInternalCommand[], CancellationToken) | ICommandScheduler.ScheduleAsync(IInternalCommand, CancellationToken) | ICommandScheduler.ScheduleAsync(IInternalCommand[], CancellationToken))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dbf5f407b0c78669562f0e0bbc51b63623cab3345ec09842f8f60a63184d4f8f"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent naming for retrieving an entity by ID. Some use FindByIdAsync, others GetByIdAsync, and others GetAsync. This creates confusion about the correct method to call for simple ID-based lookups.: Standardize on a single naming convention for ID-based retrieval, such as GetByIdAsync or FindByIdAsync, across all repository and store interfaces. (signatures: IReadRepository.FindByIdAsync | IMessagePersistenceRepository.GetByIdAsync | IAggregateStore.GetAsync)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6c1585060588a17a4d136e9b79cf0a01d785bba97fadc61d70274ad74c4a30b7"}},{"ruleId":"D22","level":"warning","message":{"text":"IPageRequest exposes both properties (PageNumber, PageSize) and a Deconstruct method that returns the same data. This is redundant and potentially confusing for consumers who might use one or the other.: Remove the Deconstruct method if properties are sufficient, or remove the properties if Deconstruct is the primary access pattern. Ensure consistent access to page parameters. (signatures: IPageRequest.Deconstruct | IPageRequest.PageNumber | IPageRequest.PageSize)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3f3d29fabef46287354dccadf23f2cd77c5bcc10ccd8f8c38bbcaea9827043e4"}},{"ruleId":"D22","level":"warning","message":{"text":"Multiple interfaces (IMessagePublisher, IBusPublisher, IBusDirectPublisher) all expose Publish/PublishAsync methods for sending messages. The signatures are similar but not identical, leading to ambiguity about which publisher to use.: Unify message publishing into a single IMessagingPublisher interface or clearly separate concerns (e.g., one for direct publishing, one for internal bus). Avoid overlapping Publish methods. (signatures: IMessagePublisher.Publish | IBusPublisher.PublishAsync | IBusDirectPublisher.PublishAsync)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce26c809aa1c5abbb9298164e4b14e950e25f144aa6d6686030590b0cd78f67b"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent naming for identity properties. Some interfaces use \u0027Id\u0027, others use \u0027Value\u0027 or \u0027Id\u0027 with different types (object vs TId). This creates inconsistency in how entities expose their identifiers.: Standardize on a single property name (e.g., \u0027Id\u0027) and type (generic TId) for all identity-having entities. Remove redundant or differently named properties. (signatures: IHaveIdentity.Id | IHaveIdentity\u003CTId\u003E.Id | IHaveIdentity\u003CTId\u003E.Value)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c8674d1baa22cb5c90028dab4f9bde66fd7996a5b73b7ba25a8a9be81a7d34f7"}},{"ruleId":"D23","level":"note","message":{"text":"Bounded contexts not declared: At 38696 LoC spread over 79 projects the codebase is both large and multi-module, so explicit bounded contexts are warranted. Declare architecture.contexts (\u22652) in config to assess cross-boundary type coupling."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1c7e276c9c682731f01819ed5378b90ca320cde1b583c90920172911598362b3"}},{"ruleId":"D24","level":"note","message":{"text":"redundant comment: \u0022Add the swagger ui code hook and resource\u0022 \u2014 trim - the builder call is self-evident; keep only the link to the swagger doc"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/BuildingBlocks.AspireIntegrations/Swagger/SwaggerUiExtensions.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5e170f5d981ece120b952b60cb1d8cedb076026755f087a20f52eb40476b6f0"}},{"ruleId":"D26","level":"note","message":{"text":"Split BuildingBlocks.Abstractions: A generic \u0027BuildingBlocks\u0027 catch-all at 24 namespaces is a sprawling grab-bag. Suggested: by namespace: BuildingBlock.Audit, BuildingBlock.Caching, ..."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fed3a1252763ed088ad4ed422c8349d0f872ef61e0f674435169bb788e5a528e"}},{"ruleId":"D26","level":"note","message":{"text":"Split BuildingBlocks.Core: Generic \u0027Core\u0027 catch-all with 48 namespaces is large and unfocused. Suggested: by namespace: Core.Messaging, Core.Storage, Core.Validation"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"43f69292e4cedb67af5e0dc0fef336530c91c48977a8ee24c8437c4559db5c83"}},{"ruleId":"D26","level":"note","message":{"text":"Split FoodDelivery.Services.Catalogs: Large Catalogs project across 62 namespaces shows it has grown into a grab-bag. Suggested: by namespace: Catalogs.Products, Catalogs.Skus, Catalogs.Categories"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"968eac875d5320049185ecf108889d316e241c26cf81e34526b4b0c76940a719"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"_httpclients/http-client.private.env.json"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"ece70a97a030ea957567ccb6f62f6b3dc3a4943734d05eeafd2cdc76b85fb7cd"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: jwt: matched rule \u0027jwt\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"_httpclients/http-client.private.env.json"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3c0d3ce59c7eecfb2072b894d28c10b357b3d8674df9501050b0499a30b3a2d"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Catalogs/FoodDelivery.Services.Catalogs.Api/appsettings.json"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a0be0e039c77bafeaaeaa46934f714639927c49244ecfd3776aa3dde3b800d6"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Customers/FoodDelivery.Services.Customers.Api/appsettings.json"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"eca70e4dd5c29ac27a5d04637823a52dd1598c08e0cc4fcf077f22ac914beb8e"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Identity/FoodDelivery.Services.Identity.Api/appsettings.json"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"052de7c4166bb50d489f937506fd1a0b1ae8bb45bf76382a44a254c129711a0a"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Orders/FoodDelivery.Services.Orders.Api/appsettings.json"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"1681d0cc3305c2281fe26b0fbc7caec64df688b666ad7cd15bb19320369cefc0"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Catalogs/ECommerce.Services.Catalogs.Api/appsettings.json"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd3fe073af4c2c816cf4d3a78402a84eddf63e971da0b70f9816ca5e56e18ad8"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Catalogs/ECommerce.Services.Catalogs.Api/appsettings.json"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd3fe073af4c2c816cf4d3a78402a84eddf63e971da0b70f9816ca5e56e18ad8"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Customers/ECommerce.Services.Customers.Api/appsettings.json"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"524c7adaa07092b2393b1c1a332d5ce422c23e2a52cbafe2e1f155140a104485"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Customers/ECommerce.Services.Customers.Api/appsettings.json"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"524c7adaa07092b2393b1c1a332d5ce422c23e2a52cbafe2e1f155140a104485"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Identity/ECommerce.Services.Identity.Api/appsettings.json"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"f65aa84c543b002165e21effb9f19cdc4549be5cd7d7f3f512a17b3015a15811"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Identity/ECommerce.Services.Identity.Api/appsettings.json"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"f65aa84c543b002165e21effb9f19cdc4549be5cd7d7f3f512a17b3015a15811"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Orders/ECommerce.Services.Orders.Api/appsettings.json"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"03539bd21a8ee0a7af0c0aa318e8c050bf29bf24584c9c3ac15d9c6b6c5fc265"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Orders/ECommerce.Services.Orders.Api/appsettings.json"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"03539bd21a8ee0a7af0c0aa318e8c050bf29bf24584c9c3ac15d9c6b6c5fc265"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Store.Services.Orders/Store.Services.Orders.Api/appsettings.json"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6391b22a623a05301ecad6177d5dfb851b82a716972fcca6a1db51a227fb35a"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Store.Services.Catalogs/Store.Services.Catalogs.Api/appsettings.json"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f3c82a44a50aaef9fe23babd9a48507397f208669d5c686554d048be0a96f76"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Store.Services.Customers/Store.Services.Customers.Api/appsettings.json"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"74319f0298a8b5fe2fccc480b17964ea582f9e91ee64f25d8a21829947202e19"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Store.Services.Identity/Store.Services.Identity.Api/appsettings.json"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"f59bca7a71c62213bd3d6435bff94fbdf8d02629371fb77d9739c9d72dda4ea6"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Store.Services.Orders/Store.Services.Orders.Api/appsettings.json"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6391b22a623a05301ecad6177d5dfb851b82a716972fcca6a1db51a227fb35a"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Store.Services.Catalogs/Store.Services.Catalogs.Api/appsettings.json"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f3c82a44a50aaef9fe23babd9a48507397f208669d5c686554d048be0a96f76"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Store.Services.Customers/Store.Services.Customers.Api/appsettings.json"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"74319f0298a8b5fe2fccc480b17964ea582f9e91ee64f25d8a21829947202e19"}},{"ruleId":"D28","level":"error","message":{"text":"Secret: generic-api-key: matched rule \u0027generic-api-key\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Store.Services.Identity/Store.Services.Identity.Api/appsettings.json"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"f59bca7a71c62213bd3d6435bff94fbdf8d02629371fb77d9739c9d72dda4ea6"}},{"ruleId":"D28","level":"note","message":{"text":"Rotate the exposed credentials \u2014 git history can\u0027t be un-committed: Some of these secrets are in git HISTORY: deleting the file does not remove them (the commit persists on every clone, fork and backup). The remediation is to ROTATE each historically-exposed credential and treat it as compromised \u2014 not to delete the file. Rewriting history is disruptive and unreliable across existing forks. (Working-tree-only secrets \u2014 no commit \u2014 can instead be removed from the file and moved to a secret store.)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".devcontainer/Dockerfile"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"30b40da5c76d9d185d53279aad925a50e82e4dd82135a8f3f0f1ee6249218dbc"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: KSV-0014: Root file system is not read-only"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0eac8f1aba8cb811e191c82b3a1b643de11d84f2a1b76e453a90d2be17e204d"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: KSV-0014: Root file system is not read-only"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0eac8f1aba8cb811e191c82b3a1b643de11d84f2a1b76e453a90d2be17e204d"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: KSV-0118: Default security context configured"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a483ce90d4eec2aae194adcb8dab6bbb6d11d47bdc2390e857fe5e98b2ae06d"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: KSV-0118: Default security context configured"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a483ce90d4eec2aae194adcb8dab6bbb6d11d47bdc2390e857fe5e98b2ae06d"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: KSV-0118: Default security context configured"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a483ce90d4eec2aae194adcb8dab6bbb6d11d47bdc2390e857fe5e98b2ae06d"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: KSV-0118: Default security context configured"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a483ce90d4eec2aae194adcb8dab6bbb6d11d47bdc2390e857fe5e98b2ae06d"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ApiGateway/Dockerfile"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dea8cc8fe7b62595c628c19a0bba73e5fd45bed9c2505d544adf23da990150b"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ApiGateway/Dockerfile.dev"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b33baad26f72a26fbe71394bb38f9e99b3da1729d6cae2f2ab9c23f1cf6e16f3"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Catalogs/Dockerfile"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebcc7110f0373de2f8f55a3bb011ad112a0faffe9c270622a754aee98769c4b1"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Catalogs/Dockerfile.dev"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f73385dec7884260cdb7140a22f8352e891a3177273d296c4817d7c5bd9e41f7"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Catalogs/Dockerfile.watch"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"313df30fcf252badc3c9b01b70790087c4b7aecd0b779880d72c48725424bbe1"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Customers/Dockerfile"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cce19294130406d6d5235c1e3606f099c9b208429dde0f1b596e1f67c1caf1d"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Customers/Dockerfile.dev"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2c1dcae3a26d54f6045f74958109b4a0d2f8767450bd7cf12e6617cb58a34db"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Customers/Dockerfile.watch"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3c056ba2f12278ea08dff6b2af3b0ed9c7f9c2cf3b6de7a9dccded364f14076"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Identity/Dockerfile"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bf2a37785962627c09cdbb5f69fa843b78730025f469f234f4d7ba1cb99d6a0"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Identity/Dockerfile.dev"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3269f86a6a2d99913e185208e13a63bd7b968079ea2f7a60cae5eb904e3cff1"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Identity/Dockerfile.watch"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6258fcb13412bfea123a44f8f8a701aba714922aa998aa9c122c64a324f48b5a"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Orders/Dockerfile"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e48fca0b6838050d7c02ba6b44a04bd3539f049a0b58cd9bffe116d5a8453583"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Orders/Dockerfile.dev"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d45e4d8908a693574ed6eede7c268e15691b2361e23fe484b79316b42faf359"}},{"ruleId":"D31","level":"error","message":{"text":"High IaC: DS-0002: Image user should not be \u0027root\u0027"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Services/Orders/Dockerfile.watch"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a1ec650d3b0e9bfbbb98e97e955511165ded052a2fdcc78107912e1fb95a82d"}},{"ruleId":"D31","level":"warning","message":{"text":"Medium IaC: DS-0001: \u0027:latest\u0027 tag used"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".devcontainer/Dockerfile"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b2f1b5b384bf8530f061918d9cac8c61532d15e1183ddeeec6808dbab9e9600"}},{"ruleId":"D31","level":"warning","message":{"text":"Medium IaC: KSV-0001: Can elevate its own privileges"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c031a4ffabf5e57b92e7c2cc33f7d601ebd7edc8e8ce0d59b14e12ebaa402095"}},{"ruleId":"D31","level":"warning","message":{"text":"Medium IaC: KSV-0001: Can elevate its own privileges"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c031a4ffabf5e57b92e7c2cc33f7d601ebd7edc8e8ce0d59b14e12ebaa402095"}},{"ruleId":"D31","level":"warning","message":{"text":"Medium IaC: KSV-0012: Runs as root user"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"302d7f579b8897b0bf091ae32bf17061fbe3ed547b163ec03dd8c4299432b5ab"}},{"ruleId":"D31","level":"warning","message":{"text":"Medium IaC: KSV-0012: Runs as root user"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"302d7f579b8897b0bf091ae32bf17061fbe3ed547b163ec03dd8c4299432b5ab"}},{"ruleId":"D31","level":"warning","message":{"text":"Medium IaC: KSV-0013: Image tag \u0022:latest\u0022 used"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"979b40dbb81ddb62e2ffcd5d2c52ac725f6c596c91d94634739cb3a89bd4d4b0"}},{"ruleId":"D31","level":"warning","message":{"text":"Medium IaC: KSV-0104: Seccomp policies disabled"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3216dd64f1d0b223948b571fbd7e010de2c757289d4039062c80b19a2b208c67"}},{"ruleId":"D31","level":"warning","message":{"text":"Medium IaC: KSV-0104: Seccomp policies disabled"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3216dd64f1d0b223948b571fbd7e010de2c757289d4039062c80b19a2b208c67"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: DS-0026: No HEALTHCHECK defined"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":".devcontainer/Dockerfile"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b33478d526b4b75f2d1effac71d00f20d80ae6679f585c0aa406adc1aaa29f92"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0003: Default capabilities: some containers do not drop all"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"22d6972f3f860b69090bb6bcd9fe75bd03492edb99cdedfe4474b67515da977b"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0003: Default capabilities: some containers do not drop all"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"22d6972f3f860b69090bb6bcd9fe75bd03492edb99cdedfe4474b67515da977b"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0004: Default capabilities: some containers do not drop any"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc0eecc63812ca04cb32276927944f441b4d55140ecf5c6c1f9740f1580eb8d4"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0004: Default capabilities: some containers do not drop any"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc0eecc63812ca04cb32276927944f441b4d55140ecf5c6c1f9740f1580eb8d4"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0011: CPU not limited"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccb46c42912f92148b4c3803b84cdf80078c49a2d1b0dcbedeab62a0ab61d1b0"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0011: CPU not limited"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccb46c42912f92148b4c3803b84cdf80078c49a2d1b0dcbedeab62a0ab61d1b0"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0015: CPU requests not specified"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"52bda9e4faed51c7db665381ab371856657e024d8ca8e49832df67dc0d1134e1"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0015: CPU requests not specified"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"52bda9e4faed51c7db665381ab371856657e024d8ca8e49832df67dc0d1134e1"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0016: Memory requests not specified"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d93b4887a2b9780e5c6ea8e26e4cef15cdc277528e4a4fb270ef2681ce4a4b46"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0016: Memory requests not specified"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d93b4887a2b9780e5c6ea8e26e4cef15cdc277528e4a4fb270ef2681ce4a4b46"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0018: Memory not limited"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"16eeac8538049d316eb333f19c33748ed0f0ef6bed1967ea0e1f100f9744dd6b"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0018: Memory not limited"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"16eeac8538049d316eb333f19c33748ed0f0ef6bed1967ea0e1f100f9744dd6b"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0020: Runs with UID \u003C= 10000"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3a84475c2ccce05205e8afb573e69956b954bc6bcc55d2c137a6ce3f955bf34"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0020: Runs with UID \u003C= 10000"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3a84475c2ccce05205e8afb573e69956b954bc6bcc55d2c137a6ce3f955bf34"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0021: Runs with GID \u003C= 10000"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ebc6bb545993100232465a448456c34dd913168210a3001fbaeb688ac334d46"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0021: Runs with GID \u003C= 10000"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ebc6bb545993100232465a448456c34dd913168210a3001fbaeb688ac334d46"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0030: Runtime/Default Seccomp profile not set"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a897bb87ef29d258b7b05fdaec58912727f9031c182cec9dffc95cbc805d307a"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0030: Runtime/Default Seccomp profile not set"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a897bb87ef29d258b7b05fdaec58912727f9031c182cec9dffc95cbc805d307a"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0106: Container capabilities must only include NET_BIND_SERVICE"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3212c818f0ef8739ffafe2fa069e4d68597e0961fa144404f1076060ced47b2"}},{"ruleId":"D31","level":"note","message":{"text":"Low IaC: KSV-0106: Container capabilities must only include NET_BIND_SERVICE"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"deployments/k8s/kubernetes/infrastructure.yaml"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3212c818f0ef8739ffafe2fa069e4d68597e0961fa144404f1076060ced47b2"}},{"ruleId":"D34","level":"note","message":{"text":"Dormant codebase: 223 of 223 significant files have no living knowledge \u2014 the codebase as a whole is dormant, not 223 separate risks. Re-engage owners or document before change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4c69f1e54b7dd6fe9029dd02df6ba8f8145b789f2f18dbdaa086c40ded49dba6"}},{"ruleId":"D36","level":"note","message":{"text":"No build provenance: No SLSA provenance generation or build attestation found in CI (e.g. slsa-github-generator, actions/attest-build-provenance)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"ruleId":"D36","level":"note","message":{"text":"No artifact signing: No artifact signing found in CI (e.g. cosign / sigstore / gitsign)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"ruleId":"D36","level":"note","message":{"text":"No SBOM: No SBOM generation or committed SBOM found (e.g. syft / anchore/sbom-action / *.spdx.json / *.cdx.json)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D36","level":"warning","message":{"text":"Unpinned build actions: CI references GitHub Actions by a floating ref (@main / @tag) rather than a pinned commit SHA, weakening build integrity."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"90f83b4fa27db32740afe9540c905f3c0499caed87f61049a8a903ecc95b41c3"}},{"ruleId":"D38","level":"error","message":{"text":"Critical CVE: [GHSA redacted]: form-data: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b17d2dd7a596871bdc65cc5763f14818a6612a538aa56c21158e991cc9a2ed6"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: braces: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f51b5b9bfc935207cb1397f7872b1428736996efb575129e997b93aaab7877d0"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: cross-spawn: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bc38f2090b636b062a891fe94d807b54555bc19f203fd1e9b4b40346ff5d0b9"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: glob: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e89b3e1c3650e8b202da0744ac938e3360d7b9b72d9025c5d3fdbe5571253c62"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: lodash: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cad7ac313af3ba5814b4548f0b78d420cef3bd9f83486cb1ba87698f69e9b54"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: minimatch: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"baab8f42ef173625568528d1b2e5f9d2c704df9f656ecd68df80d604ebb2e7bd"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: minimatch: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f0bccbcc5852b676e1e6ab32692674b3cc545fd78e2ca4b7399a09983b8d7d6"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: minimatch: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"911a3dc3493cbfba4facf303b03e143b653dd8a7e283a5958f4a2b6240b416b2"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: picomatch: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d721547d8e38c60f9dd5ea738d703083e23dd29112d836355239aafaaa2a7e71"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: tar: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cc1f4db75708829ef8f6027921ae2b1afc9f794a2a1173f8b5886939237216d"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: tar: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"adf39d2eac076ace9b249ad341feddcfdb0fb7f069b211168dfc813809c82b87"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: tar: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d59f7eac7565ebf10d33990011df12a1d80486cda2c05438e813464e9c90e3"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: tar: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbc3682806a9a46c8ab6b1378dce5889c1b50d37eec62223ae0155c3af9397a7"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: tar: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"336359dd75dee2175b389e5c300c99545dabf115ff3b8c3d8747721c6cd0c9fd"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: tar: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e34af14cd570f4d5f087cbaac6e87fc8649140cd8d1d3b5f878c283714bdb10"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: @modelcontextprotocol/sdk: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9259ac3cf0ee92e3878c05737faf581a6c5c18375b02f173c177118a883c9bcf"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: @modelcontextprotocol/sdk: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d5867e89b03d5212ae00d40bfa63aca154d157812dd4915e0f4abac043d5ad3"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: @modelcontextprotocol/sdk: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6e839b050ab790c04273306d842cf819fa54b7f16c82ee9b52fec595304df4d"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d5a56cc89f1ad619ea332d4e1d180c3607bc124a78bf480977f11caeff3264f"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"10bacec08b19345fec59f56eb368edb890417fa2082970003a167a690632ff89"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8311adf0c53e19fa80e3524312da52ce84096dcfde196df779c4d9badb541728"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8535b542ea1c33a62711e120ab19b9d6d3ab4a0ff04484ebb6ec3d3b011fd2f5"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ef9c837a5c8a6bba9d07d5015f259043efb6155a37a65841293140bd3dd4af2"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"55905f6951e0ea12ecd2f6eb45e74d31e836193f0504d710c838d19fca2ad9ae"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4203901c5458951087420a5ba5a7cd4a2ec709e9f3d3d23087378aa254ad086a"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d0a7d8e5437123158071708bb1ef90383208a4dd242377c5e8c93e3d341d55"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"818545f54db478c806d39b48ca716de972b78e03a545d403cf6e19208483773a"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d9bc46395a48d8aa5aeec4be441d6541e9eb73318873e5e342515a3931327dc"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"82987f29ea0bba22fbe9586bdd364c5d7828558be99957a9a193015bf46353eb"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f2c98290fa0ec398296878ca4d06167e62560efcdcf363daa5ddc226fca9490"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: axios: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3c1970b614a453795770f390d6f5ece3d38c41278b6aa160eef3e82cb2c29c3"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: flatted: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"71db03a1d352c2d311f93be17fbc07c0fb98021438afa8bae5701488e0d46b68"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: flatted: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d723ce78cf2134122791d515be180efcf680801bdec0c03f9e423151c89d29bc"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: form-data: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbbf0f92ae889849a2074a4668b1e98f5046f356c0c978b05277d88f8e302f42"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: path-to-regexp: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1bf9ba2c16fd1c738508e4e2dcc2075dd015330c2e7a9c51675b654fe311560"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: react-router: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7065d89168613542b73e22a943c637fe081bb3a697e7859949c62e92b0439a0d"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: react-router: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4086fdc34a269129fb0f6c4247d8dde2343e8c97edb29acf83e6dee0fb06259f"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: react-router: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f92bda269d7b2725580003eddf6d4c706894dab5aef4276ac4dd0bcb389f48fb"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: react-router: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"775ebe35e4ea0ddf5d2271b0f558793ef2246001c0886b084c690a71615e81db"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: react-router: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddcb123246fd3a1a665f205ad5770a0e8aaf4bb1e7e0339b956b2f02b66c2d98"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: react-router: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7a44bdbc5db23948711f0596f9fc66af9e75d96cb06366fdd7137f33b762280"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: rollup: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"65bc26fe4dd571fbffc7d446f34fe1e49a8dd34c90b05b7d6c0268bb2d1f2a03"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: vite: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a80aba7522023c113b0c087fcd8b8cadbb12a1f56310c78efcead7cac76856d7"}},{"ruleId":"D38","level":"error","message":{"text":"High CVE: [GHSA redacted]: vite: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/UIs/Spa/react-food-delivery/package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d006ca5825ff7943495946dea9040c2ba6e9d82ee47ca0a57096056065e77af"}},{"ruleId":"D38","level":"warning","message":{"text":"Medium CVE: [GHSA redacted]: ajv: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"251f86ed6a1d28c336e10786e72c9921bc33b7e6bad7459cf48910436dbad50e"}},{"ruleId":"D38","level":"warning","message":{"text":"Medium CVE: [GHSA redacted]: brace-expansion: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f53c49dd1ef5f798a1dee42c3446efe9c5e764043d52eeec257b207460787ba5"}},{"ruleId":"D38","level":"warning","message":{"text":"Medium CVE: [GHSA redacted]: ip-address: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e3f2b8e45f288ab6b592896da8ba987b8edcaee9b4fc229513b7e36f1adb379"}},{"ruleId":"D38","level":"warning","message":{"text":"Medium CVE: [GHSA redacted]: js-yaml: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d080cfb2abae3ccddce74459d6b07bcb9db48ba4aa1d92668ba6099176e26079"}},{"ruleId":"D38","level":"warning","message":{"text":"Medium CVE: [GHSA redacted]: js-yaml: [GHSA redacted] (in 2 lockfiles)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"debf1466dab5e7ead783cb51c0289861dadf78e4a3dd7fcec7d183a5a776f7d1"}},{"ruleId":"D38","level":"warning","message":{"text":"Medium CVE: [GHSA redacted]: lodash: [GHSA redacted]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"package-lock.json"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d69574da984b4e9940b25f3856921d52bfcba35695da59c0a75b1f74464c1ed4"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1357","name":"Reliance on Insufficiently Trustworthy Component"},{"id":"CWE-1395","name":"Dependency on Vulnerable Third-Party Component"},{"id":"CWE-798","name":"Use of Hard-coded Credentials"}]}],"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":0,"secretScannerRunsExcluded":0}}}]}