{"$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":"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":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D10","name":"Test Quality","shortDescription":{"text":"Test Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D10"},{"id":"D11","name":"Test Reliability","shortDescription":{"text":"Test Reliability"},"helpUri":"https://codehealth.canine.dev/dimensions/D11"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D14","name":"License Compliance","shortDescription":{"text":"License Compliance"},"helpUri":"https://codehealth.canine.dev/dimensions/D14"},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"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":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D30","name":"Dependency Vulnerabilities","shortDescription":{"text":"Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D30","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D31","name":"IaC \u0026 Container Security","shortDescription":{"text":"IaC \u0026 Container Security"},"helpUri":"https://codehealth.canine.dev/dimensions/D31","relationships":[{"target":{"id":"CWE-1032","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-16","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1032","CWE-732","CWE-16"]}},{"id":"D33","name":"JS/npm Dependency Vulnerabilities","shortDescription":{"text":"JS/npm Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D33","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D37","name":"Vulnerability-disclosure Policy","shortDescription":{"text":"Vulnerability-disclosure Policy"},"helpUri":"https://codehealth.canine.dev/dimensions/D37","relationships":[{"target":{"id":"CWE-1059","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1059"]}}]}},"results":[{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201320 lines \u00D7 2): src/Modules/Files/Modules.Files/Jobs/PurgeDeletedFilesJob.cs:29-48 | src/Modules/Files/Modules.Files/Jobs/PurgeOrphanedFilesJob.cs:29-46"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Files/Modules.Files/Jobs/PurgeDeletedFilesJob.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"24ef9093a86ee2f3c5d922654c202c67170f31522b44b77104d42fca951cb181"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): src/Host/FSH.Starter.Migrations.PostgreSQL/Catalog/20260430103838_AddSoftDelete.cs:16-34 | src/Host/FSH.Starter.Migrations.PostgreSQL/Catalog/20260517105359_CatalogTenantIsolation.cs:15-33 | src/Host/FSH.Starter.Migrations.PostgreSQL/Catalog/20260517105359_CatalogTenantIsolation.cs:103-121"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Host/FSH.Starter.Migrations.PostgreSQL/Catalog/20260430103838_AddSoftDelete.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfe19a6b3ae693d5e72a5941c49ebb1597dd5b20b1c24d0d1a9869d180c838cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/Host/FSH.Starter.Migrations.PostgreSQL/Audit/20251203033647_Add Audits.cs:41-59 | src/Host/FSH.Starter.Migrations.PostgreSQL/Audit/20260430110124_HardenAuditIndexes.cs:121-139"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Host/FSH.Starter.Migrations.PostgreSQL/Audit/20251203033647_Add Audits.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19f0428977eeeb840a9e3c85e6c304268b6015fea369f549262f87dc186902a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/Host/FSH.Starter.Migrations.PostgreSQL/Catalog/20260430103838_AddSoftDelete.cs:107-125 | src/Host/FSH.Starter.Migrations.PostgreSQL/Catalog/20260517105359_CatalogTenantIsolation.cs:139-157"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Host/FSH.Starter.Migrations.PostgreSQL/Catalog/20260430103838_AddSoftDelete.cs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1324dd351e99dcf1fb34b576ebb27cad2525a21c6ad08e19fae1b41112ce3c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/Host/FSH.Starter.Migrations.PostgreSQL/Chat/20260517105429_ChatTenantIsolation.cs:15-33 | src/Host/FSH.Starter.Migrations.PostgreSQL/Chat/20260517105429_ChatTenantIsolation.cs:117-135"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Host/FSH.Starter.Migrations.PostgreSQL/Chat/20260517105429_ChatTenantIsolation.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a642ca9263be2276a77a1dcdc9e50a6caf228e2f6f59ef8560b6e1dd95f92ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201315 lines \u00D7 2): src/Modules/Files/Modules.Files/Jobs/PurgeDeletedFilesJob.cs:65-76 | src/Modules/Files/Modules.Files/Jobs/PurgeOrphanedFilesJob.cs:46-60"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Files/Modules.Files/Jobs/PurgeDeletedFilesJob.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0a5fe70ca1cc975a59e31660c92845314bd3a2253b6742ff9595659e2543e71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): src/BuildingBlocks/Quota/InMemoryQuotaService.cs:123-134 | src/BuildingBlocks/Quota/RedisQuotaService.cs:159-172"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Quota/InMemoryQuotaService.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"248b57f2a0a6a1ac7ce0da5a27f1d63ef2847a6c4fd0101ef13fd9ee7f1aa227"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): src/BuildingBlocks/Quota/InMemoryQuotaService.cs:74-84 | src/BuildingBlocks/Quota/RedisQuotaService.cs:97-108"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Quota/InMemoryQuotaService.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea831a020494318dbeb40130152cd6a6e8700a5ec4451ada5ddd26e7383bb7f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): src/BuildingBlocks/Quota/InMemoryQuotaService.cs:151-159 | src/BuildingBlocks/Quota/RedisQuotaService.cs:191-201"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Quota/InMemoryQuotaService.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5c8ed5f7de80c98fc3b90f593aaa6d9a27f1836fc829a1cf1a2d0f135d2bcc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): src/Modules/Auditing/Modules.Auditing/Features/v1/GetAudits/GetAuditsQueryValidator.cs:13-23 | src/Modules/Auditing/Modules.Auditing/Features/v1/GetAuditSummary/GetAuditSummaryQueryValidator.cs:10-18"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Auditing/Modules.Auditing/Features/v1/GetAudits/GetAuditsQueryValidator.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"8894dbe88b292deffb8f729cd8f83d7c63baa35772102e4a57c25fe21ba609ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): src/Modules/Catalog/Modules.Catalog/Domain/Brand.cs:61-68 | src/Modules/Catalog/Modules.Catalog/Domain/Category.cs:60-67 | src/Modules/Catalog/Modules.Catalog/Domain/Product.cs:227-234 | src/Modules/Chat/Modules.Chat/Domain/ChatChannel.cs:220-227"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Catalog/Modules.Catalog/Domain/Brand.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e7ad824ca13ac5991f26facf7776dc9a763a6fe87e7ff90aadf7bb1094020d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/Host/FSH.Starter.DbMigrator/DemoSeed/DemoSeeder.cs:429-435 | src/Host/FSH.Starter.DbMigrator/DemoSeed/DemoSeeder.cs:470-476 | src/Host/FSH.Starter.DbMigrator/DemoSeed/DemoSeeder.cs:538-544"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Host/FSH.Starter.DbMigrator/DemoSeed/DemoSeeder.cs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cffada84a2e27853965903e298b93cf1cc3c50598fca5c2f6d2eb8ff8a1e2ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/Host/FSH.Starter.Migrations.PostgreSQL/Billing/20260420140335_InitialBilling.cs:72-78 | src/Host/FSH.Starter.Migrations.PostgreSQL/Billing/20260625190639_WhatsAppWalletTopup.cs:51-57"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Host/FSH.Starter.Migrations.PostgreSQL/Billing/20260420140335_InitialBilling.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"efdee18ff7c7d596d7512a3f76a00182001426550e98101db30c647a6f07d952"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/Host/FSH.Starter.Migrations.PostgreSQL/Catalog/20260430033202_InitialCatalog.cs:26-32 | src/Host/FSH.Starter.Migrations.PostgreSQL/Catalog/20260430034535_AddProducts.cs:30-36"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Host/FSH.Starter.Migrations.PostgreSQL/Catalog/20260430033202_InitialCatalog.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb759f18d2bd1346a3f7eadab6df6b72814258d1f2176909236d05a13f3f4dc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/Host/FSH.Starter.Migrations.PostgreSQL/Chat/20260512193158_InitialChat.cs:33-39 | src/Host/FSH.Starter.Migrations.PostgreSQL/Files/20260512080750_CreateFileAssets.cs:37-43"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Host/FSH.Starter.Migrations.PostgreSQL/Chat/20260512193158_InitialChat.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aca4be73275ccf2af774afbd534fe3033489e7961335c161fef11fdb2f777ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/Modules/Identity/Modules.Identity/Services/SessionService.cs:96-102 | src/Modules/Identity/Modules.Identity/Services/SessionService.cs:113-119"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Identity/Modules.Identity/Services/SessionService.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"625a773a8a5517d23b6fc220def5369bd9a4094feaaa17a895095fc1aeca613d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/Modules/Catalog/Modules.Catalog/Features/v1/Products/CreateProduct/CreateProductCommandValidator.cs:10-14 | src/Modules/Catalog/Modules.Catalog/Features/v1/Products/UpdateProduct/UpdateProductCommandValidator.cs:10-14"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Catalog/Modules.Catalog/Features/v1/Products/CreateProduct/CreateProductCommandValidator.cs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9de3964e05dc8abdabd1ebf4e287fae6ad7d8436d475c37e069ea8e4b5e9f3b"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Caching: Caching: 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":"85bf3e97be224adbc2f4a4568f817ca40532eb5fa9446b052a581e8e84e2a7c2"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Shared: Shared: abstractness 0.13, instability 0.03, distance 0.83 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9a6075584bf1a071b89754c93f688530ad9c449d73224f95d418320ea318e68b"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Mailing: Mailing: abstractness 0.13, instability 0.07, distance 0.81 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6600ca3d2ded73e7179cd79b1f34664539ffc8b95af26794b635bd388080bae4"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Jobs: Jobs: abstractness 0.08, instability 0.13, distance 0.79 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c4e6438e40798d8ceef444544764084165296d21f373437bb90d174ae5989e65"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Quota: Quota: abstractness 0.18, instability 0.12, distance 0.70 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1879358241472ba332963cb993afdefe27d23b75497ac4697062b9e91b47e538"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: clients/dashboard/src/pages/chat/message.tsx: clients/dashboard/src/pages/chat/message.tsx changed 20 times in last 90 days, max complexity 39. 7 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"clients/dashboard/src/pages/chat/message.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"40c94eef61a27bdaba6261e55879d6653a724f8eb2ecae27c8eb3e169f5bcadd"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: clients/admin/src/pages/tenants/detail.tsx: clients/admin/src/pages/tenants/detail.tsx changed 10 times in last 90 days, max complexity 40. 2 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"clients/admin/src/pages/tenants/detail.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2790135af91cd53d3081c6ecd9e28ca24c57f1f3aa31a089b8487aef397107f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: clients/dashboard/src/pages/overview.tsx: clients/dashboard/src/pages/overview.tsx changed 8 times in last 90 days, max complexity 40. 2 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"clients/dashboard/src/pages/overview.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49fd8aa702d6214c8cface6cd3eebbf2ae7881aa68617ca91a23c2f0a5fedb8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: clients/dashboard/src/pages/chat/composer.tsx: clients/dashboard/src/pages/chat/composer.tsx changed 13 times in last 90 days, max complexity 21. 4 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"clients/dashboard/src/pages/chat/composer.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2839817420c220469d7de39b773c3f5df4d84248071b0bafa0c59d86c13369c4"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: clients/dashboard/src/pages/identity/user-detail.tsx: clients/dashboard/src/pages/identity/user-detail.tsx changed 4 times in last 90 days, max complexity 55. 2 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"clients/dashboard/src/pages/identity/user-detail.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4b26886c205f921c8ba0591b8aae4fd3764b34d92346ff36738fdeb1e72e048"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: clients/dashboard/src/pages/login.tsx: clients/dashboard/src/pages/login.tsx changed 12 times in last 90 days, max complexity 18. 1 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"clients/dashboard/src/pages/login.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"33d349afa5dfa2e364a3afbc4de9c13f87c151b51a4f2e59bdf510589e156767"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: clients/admin/src/pages/billing/invoice-detail.tsx: clients/admin/src/pages/billing/invoice-detail.tsx changed 5 times in last 90 days, max complexity 41. 1 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"clients/admin/src/pages/billing/invoice-detail.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0e328608fda9df7d414c0a50f5c23cd10e667d5e678be557acee8ea3f4ed99b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: clients/dashboard/src/components/layout/topbar.tsx: clients/dashboard/src/components/layout/topbar.tsx changed 11 times in last 90 days, max complexity 18. 1 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"clients/dashboard/src/components/layout/topbar.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc5693dc76cb69719ff863efa635374b2c28d2e51f2b69c8613afa13c4188ef6"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: clients/admin/src/pages/login.tsx: clients/admin/src/pages/login.tsx changed 10 times in last 90 days, max complexity 18. 3 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"clients/admin/src/pages/login.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"44efc2f4e0ec85c14596dd62947f79a884a3f41108399958ea84e846f83cce65"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: clients/dashboard/src/pages/chat/channel-rail.tsx: clients/dashboard/src/pages/chat/channel-rail.tsx changed 10 times in last 90 days, max complexity 18. 2 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"clients/dashboard/src/pages/chat/channel-rail.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"880290e050e506a8ab11ae1916c610aaea2aad3506eeb6d1caf3fe072b631fc4"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 125 significant file(s) lose their only recent owner (largest: src/Tools/CLI/Commands/NewCommand.cs). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"934e49d4830066cb62f2d8cddd852bc2999a7ae17fb5974cc8f014ae7b857c45"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 6 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 6 warning codes (CA1515;CA1861;CA1707;CA1308;S2376;S4581) in one stroke \u2014 one team-wide decision, not 6 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Webhooks.Tests/Webhooks.Tests.csproj"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"9809c2fe3c67d83bee14788bf5faeb043357d5b071185ba8eba73f5ee6685b41"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 12 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 12 warning codes (CA1515;CA1861;CA1707;CA1307;CA2234;CA2000;CA1062;CA1031;CA1812;CA1056;S1481;S125) in one stroke \u2014 one team-wide decision, not 12 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Integration.Tests/Integration.Tests.csproj"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"4259c3d2ad41dc7024bbc0e168a56e4ef373dd620b62476ae2f005ce8604eb58"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 11 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 11 warning codes (CA1515;CA1861;CA1707;CA1307;CA2234;CA2000;CA1062;CA1031;CA1812;CA1056;S1481) in one stroke \u2014 one team-wide decision, not 11 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Integration.Middleware.Tests/Integration.Middleware.Tests.csproj"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cf385c538ef8fa61a02461ce7b5b6164610a251bb5bdf60c809b882a7deb470"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 13 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 13 warning codes (CA1515;CA1861;CA1707;CA2007;CA1062;CA1812;CA2227;CA1002;CA1819;S1144;CA1031;S2094;S3459) in one stroke \u2014 one team-wide decision, not 13 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Framework.Tests/Framework.Tests.csproj"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b60cf3d1fa30c7e12074e152f22c126733f73a1b5ad1d217cc6b0cebd77080b"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 7 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 7 warning codes (CA1805;CA1307;CA1308;S1854;CA1812;CA1305;CA2000) in one stroke \u2014 one team-wide decision, not 7 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Web/Web.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"d17fb1717823b5ec5b0635315efe561f6fd03d3351c9ed913ff046d6182c794d"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 7 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 7 warning codes (CA1031;CA1056;CA1002;CA2227;CA1812;CA1308;CA1062) in one stroke \u2014 one team-wide decision, not 7 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Storage/Storage.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4f78136ecf950582c093a879bcbf44cb1632d2ef3c16c4072f8edc003a3b014"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 6 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 6 warning codes (CA1716;CA1711;CA1019;CA1305;CA1002;CA2227) in one stroke \u2014 one team-wide decision, not 6 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Shared/Shared.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fe0817d65041224a94b58f99f89007f9b4b6d15500bbd5c3eaa233929276720"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 7 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 7 warning codes (CA1031;CA1054;CA1056;CA1308;CA1812;CA1859;S3267) in one stroke \u2014 one team-wide decision, not 7 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Webhooks/Modules.Webhooks/Modules.Webhooks.csproj"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"346158f1e55c54feeeaec975c4f01824ee4d22a676eea07da21d3270551bebb4"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 7 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 7 warning codes (CA1031;CA1711;CA1812;CA1859;CA1002;CA2227;S3267) in one stroke \u2014 one team-wide decision, not 7 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Notifications/Modules.Notifications/Modules.Notifications.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"81b3763d80879a168e4225c512a2ec714be5c4cc08ac109510ebc510d4a39d45"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 10 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 10 warning codes (CA1031;CA1056;CA1008;CA1716;CA1812;S1135;S2139;S6667;S3267;S1172) in one stroke \u2014 one team-wide decision, not 10 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Multitenancy/Modules.Multitenancy/Modules.Multitenancy.csproj"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb6895d3e6349c729ff233aa0a79b18f0c5ba75c9cc2286da45991790b33fc15"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 11 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 11 warning codes (CA1031;CA1812;CA2208;S3267;S3928;CA1062;CA1304;CA1308;CA1311;CA1862;CA2227) in one stroke \u2014 one team-wide decision, not 11 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Identity/Modules.Identity/Modules.Identity.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7cbe1689916f8fe907c615289adf1f0d3599a54888dbe261d5a9e2e330fbdb3"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 6 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 6 warning codes (CA1031;CA1812;CA1859;CA1002;CA2227;S3267) in one stroke \u2014 one team-wide decision, not 6 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Files/Modules.Files/Modules.Files.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"187b7ade9723b2c4cf52940c3cb7f61db8b1015315780a42a21033b4e14b8e4e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj \u2014 6 warning codes suppressed in one element: A single \u003CNoWarn\u003E suppresses 6 warning codes (CA1031;CA1812;CA1859;CA1002;CA2227;S3267) in one stroke \u2014 one team-wide decision, not 6 independent debts. Review the set centrally rather than code-by-code; each code you can re-enable is one less blanket suppression. (Every code still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Chat/Modules.Chat/Modules.Chat.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b4a3c0ef4f2b1d1ff156844624268e7ec2a5b16c8510bab5dd54d365bd43a1f"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable S1144"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Integration.Tests/Tests/Catalog/ProductImagesTests.cs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"b74b682f0b832a30ef555967b5b76b3e2ea4501efaae102d5bf48572438ede0c"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable S1144"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Integration.Tests/Tests/Catalog/ProductsEndpointTests.cs"},"region":{"startLine":649}}}],"partialFingerprints":{"codehealthFindingId/v1":"22bbcf549e25e9d1e85c0de0e7e92c907e4077536de8708dd61c0f8738e391ae"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable S1144, S3459"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Integration.Tests/Tests/Multitenancy/MyTenantStatusTests.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"80c9b8a37986885c46b70e96453563105228e8476fd2f4aafee789c340466de9"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1308"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Integration.Tests/Tests/Webhooks/WebhookSignatureTests.cs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"84fb0182a902c1a7cc0840974d3b6e9c58e60a39b1ffc6ff7756a9ae9615bc91"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Multitenancy.Tests/TenantLifecycleTests.cs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ae85fe0ae0c55e9fa73f82db8b653d98cd443d69e6f4454afdf78b6bb61283"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Multitenancy.Tests/TenantLifecycleTests.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ae85fe0ae0c55e9fa73f82db8b653d98cd443d69e6f4454afdf78b6bb61283"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: NU5128"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"templates/FullStackHero.NET.StarterKit.csproj"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"587e6466fb1bf24395d83a91ba18e7b78afe4b653a9e20d6dfa497f422735034"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: NU5110"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"templates/FullStackHero.NET.StarterKit.csproj"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"587e6466fb1bf24395d83a91ba18e7b78afe4b653a9e20d6dfa497f422735034"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: NU5111"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"templates/FullStackHero.NET.StarterKit.csproj"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"587e6466fb1bf24395d83a91ba18e7b78afe4b653a9e20d6dfa497f422735034"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1031"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tools/CLI/FSH.CLI.csproj"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"1765ab939be5953c614e85ef2c4962e313aa993446d1fc9c22a2e11f38ae78ab"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1031"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Jobs/Jobs.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8b7ec1bb4517012d1136f6c74d400e02d73b48adc127bf5e724c70f3178cb4d"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1031"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Eventing/Eventing.csproj"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"a51d79213bfb70c0e918c54bf524f4f2aa757a4044db4cb0f43ca4996a5f2621"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1031"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Tickets/Modules.Tickets/Modules.Tickets.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0a2507f4c33232d0fde2d9af090c7033cd440da2173f5792049a17b2cf328f4"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1031"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Catalog/Modules.Catalog/Modules.Catalog.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"736acd29de5c4ebdb9274675870356c4d40ad6db971dc72a30a6f7357511ca9c"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1031"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Billing/Modules.Billing/Modules.Billing.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"825ce9d988f71199788d2154cf5a16a36d666a1517aa554565eaff54c3e8784d"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1031"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Auditing/Modules.Auditing/Modules.Auditing.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cc9ce2ff43da9766183fc22f780f9c9658777d8469ed3f5d3115b31be60f05e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj repeated across 10 files: The identical NoWarnInCsproj (\u0060CA1515\u0060) appears in 10 files (10 occurrences) \u2014 a single repo-wide policy (e.g. a Directory.Build.props decision or an idiomatic suppression), not 10 independent debts. Decide it once centrally rather than file-by-file. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tools/CLI/FSH.CLI.csproj"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5682c4fb1a44a022bab3703bb32ffac490da4a1bff01c9abcd9218f2f3bbdbd"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S1075"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tools/CLI/FSH.CLI.csproj"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"1765ab939be5953c614e85ef2c4962e313aa993446d1fc9c22a2e11f38ae78ab"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S125"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Multitenancy.Tests/Multitenancy.Tests.csproj"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce8c5efec0cf2d0e7423eef96a599f4b71dc9907e8b722df43e6e5e4515d1df7"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S125"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Architecture.Tests/Architecture.Tests.csproj"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"756a6a2bb8c508668a11900d71c45ad2b6f01485a92d2b70a34ea1aa47663b53"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S3261"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Multitenancy.Tests/Multitenancy.Tests.csproj"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce8c5efec0cf2d0e7423eef96a599f4b71dc9907e8b722df43e6e5e4515d1df7"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj repeated across 10 files: The identical NoWarnInCsproj (\u0060CA1707\u0060) appears in 10 files (10 occurrences) \u2014 a single repo-wide policy (e.g. a Directory.Build.props decision or an idiomatic suppression), not 10 independent debts. Decide it once centrally rather than file-by-file. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Multitenancy.Tests/Multitenancy.Tests.csproj"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f638eab7f8f99682a0a14235805d97ba7a076343b23334fc232d6d8391735d7"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj repeated across 10 files: The identical NoWarnInCsproj (\u0060CA1861\u0060) appears in 10 files (10 occurrences) \u2014 a single repo-wide policy (e.g. a Directory.Build.props decision or an idiomatic suppression), not 10 independent debts. Decide it once centrally rather than file-by-file. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Identity.Tests/Identity.Tests.csproj"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3cdba366846ce584b57f3ddd22ed57fc741a05242e549e41e1ace32272595e7"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1307"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Architecture.Tests/Architecture.Tests.csproj"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"756a6a2bb8c508668a11900d71c45ad2b6f01485a92d2b70a34ea1aa47663b53"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1062"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Host/FSH.Starter.Migrations.PostgreSQL/FSH.Starter.Migrations.PostgreSQL.csproj"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dd0600dc3b333169f0a9a306b7b3ae1d47fed1747cd1bed356fcf7212c4608a"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1303"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Host/FSH.Starter.DbMigrator/FSH.Starter.DbMigrator.csproj"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d154558db6bd56d7c23d45e6bf60bf2b367b6e2705c563949215ec29389efb"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S4144"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Persistence/Persistence.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e4bc1b892cec945f97f0004e027da494d6393c05979a35fb3d15e5b8219dbf4"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS0618"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Persistence/Persistence.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e4bc1b892cec945f97f0004e027da494d6393c05979a35fb3d15e5b8219dbf4"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S3376"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Jobs/Jobs.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8b7ec1bb4517012d1136f6c74d400e02d73b48adc127bf5e724c70f3178cb4d"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S3993"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Jobs/Jobs.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8b7ec1bb4517012d1136f6c74d400e02d73b48adc127bf5e724c70f3178cb4d"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1711"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Eventing/Eventing.csproj"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"a51d79213bfb70c0e918c54bf524f4f2aa757a4044db4cb0f43ca4996a5f2621"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1711"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Eventing.Abstractions/Eventing.Abstractions.csproj"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"174d8138a5e847ed76db84e7d04571b7f31953db0df97e776424fcd55644c922"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1711"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Billing/Modules.Billing/Modules.Billing.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"825ce9d988f71199788d2154cf5a16a36d666a1517aa554565eaff54c3e8784d"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1716"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Eventing/Eventing.csproj"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"a51d79213bfb70c0e918c54bf524f4f2aa757a4044db4cb0f43ca4996a5f2621"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1716"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Eventing.Abstractions/Eventing.Abstractions.csproj"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"174d8138a5e847ed76db84e7d04571b7f31953db0df97e776424fcd55644c922"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S2139"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Eventing/Eventing.csproj"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"a51d79213bfb70c0e918c54bf524f4f2aa757a4044db4cb0f43ca4996a5f2621"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S1066"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/BuildingBlocks/Eventing/Eventing.csproj"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"a51d79213bfb70c0e918c54bf524f4f2aa757a4044db4cb0f43ca4996a5f2621"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1054"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Webhooks/Modules.Webhooks.Contracts/Modules.Webhooks.Contracts.csproj"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"29035d6cc354b36474ee9172a90dc0d2fd8d166613bc4f9844a730bf6ccb5e10"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1056"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Webhooks/Modules.Webhooks.Contracts/Modules.Webhooks.Contracts.csproj"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"29035d6cc354b36474ee9172a90dc0d2fd8d166613bc4f9844a730bf6ccb5e10"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1056"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Multitenancy/Modules.Multitenancy.Contracts/Modules.Multitenancy.Contracts.csproj"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"5455f7b316507efa5cd1b6f34fe64555cfe143955961ec26f01a3005ba6b4a3e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1056"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Identity/Modules.Identity.Contracts/Modules.Identity.Contracts.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b335b1ed11c4e53b2b8cfcff06e5308808feac4a2484f3eab5bb7d4b78bdfb"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj repeated across 10 files: The identical NoWarnInCsproj (\u0060S2094\u0060) appears in 10 files (10 occurrences) \u2014 a single repo-wide policy (e.g. a Directory.Build.props decision or an idiomatic suppression), not 10 independent debts. Decide it once centrally rather than file-by-file. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Webhooks/Modules.Webhooks.Contracts/Modules.Webhooks.Contracts.csproj"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"5800ac7ffdbb8c2d06b1277296efe7e705c1781ded86b8c2f1223d0b8898551e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1812"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Tickets/Modules.Tickets/Modules.Tickets.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0a2507f4c33232d0fde2d9af090c7033cd440da2173f5792049a17b2cf328f4"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1812"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Catalog/Modules.Catalog/Modules.Catalog.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"736acd29de5c4ebdb9274675870356c4d40ad6db971dc72a30a6f7357511ca9c"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1812"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Billing/Modules.Billing/Modules.Billing.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"825ce9d988f71199788d2154cf5a16a36d666a1517aa554565eaff54c3e8784d"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1812"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Auditing/Modules.Auditing/Modules.Auditing.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cc9ce2ff43da9766183fc22f780f9c9658777d8469ed3f5d3115b31be60f05e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1859"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Tickets/Modules.Tickets/Modules.Tickets.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0a2507f4c33232d0fde2d9af090c7033cd440da2173f5792049a17b2cf328f4"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1859"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Catalog/Modules.Catalog/Modules.Catalog.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"736acd29de5c4ebdb9274675870356c4d40ad6db971dc72a30a6f7357511ca9c"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1859"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Billing/Modules.Billing/Modules.Billing.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"825ce9d988f71199788d2154cf5a16a36d666a1517aa554565eaff54c3e8784d"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1859"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Auditing/Modules.Auditing/Modules.Auditing.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cc9ce2ff43da9766183fc22f780f9c9658777d8469ed3f5d3115b31be60f05e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S3267"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Tickets/Modules.Tickets/Modules.Tickets.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0a2507f4c33232d0fde2d9af090c7033cd440da2173f5792049a17b2cf328f4"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S3267"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Catalog/Modules.Catalog/Modules.Catalog.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"736acd29de5c4ebdb9274675870356c4d40ad6db971dc72a30a6f7357511ca9c"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S3267"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Billing/Modules.Billing/Modules.Billing.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"825ce9d988f71199788d2154cf5a16a36d666a1517aa554565eaff54c3e8784d"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: S3267"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Auditing/Modules.Auditing/Modules.Auditing.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cc9ce2ff43da9766183fc22f780f9c9658777d8469ed3f5d3115b31be60f05e"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1002"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Identity/Modules.Identity.Contracts/Modules.Identity.Contracts.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b335b1ed11c4e53b2b8cfcff06e5308808feac4a2484f3eab5bb7d4b78bdfb"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CS1572"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Identity/Modules.Identity.Contracts/Modules.Identity.Contracts.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b335b1ed11c4e53b2b8cfcff06e5308808feac4a2484f3eab5bb7d4b78bdfb"}},{"ruleId":"D17","level":"error","message":{"text":"NoWarnInCsproj: CA1308"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Auditing/Modules.Auditing/Modules.Auditing.csproj"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cc9ce2ff43da9766183fc22f780f9c9658777d8469ed3f5d3115b31be60f05e"}},{"ruleId":"D17","level":"warning","message":{"text":"Dead code: Promote: Method Promote \u2014 no references found in solution."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Modules/Chat/Modules.Chat/Domain/ChannelMember.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"d556ff2e51a3c94f9a7b49ecd0c05deb9147ffbb250e9f0e7bf3c7c08293f0c5"}},{"ruleId":"D17","level":"warning","message":{"text":"Dead code: CategoryRow: NamedType CategoryRow \u2014 no references found in solution."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Integration.Tests/Tests/Catalog/ProductImagesTests.cs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"b65fbf6eb1e6ac6fc19210f46989b5b93ab6371c5fd65d34df2be1b3446f0bca"}},{"ruleId":"D17","level":"warning","message":{"text":"Dead code: CategoryRow: NamedType CategoryRow \u2014 no references found in solution."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tests/Integration.Tests/Tests/Catalog/ProductsEndpointTests.cs"},"region":{"startLine":650}}}],"partialFingerprints":{"codehealthFindingId/v1":"afe9f1d968aef34ece9de552adf3381948e500ecc45ec937bdda0b40cfe88545"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent naming for write operations: \u0027Write\u0027 is used for all, but the specific domain names (Activity, EntityChange, Security, Exception) are not parallel in structure. \u0027WriteActivityAsync\u0027 and \u0027WriteExceptionAsync\u0027 use the domain type directly, while \u0027WriteEntityChangeAsync\u0027 and \u0027WriteSecurityAsync\u0027 use the action/operation name. This creates a slight cognitive load in remembering which domain uses which naming convention.: Standardize on a consistent verb-noun pattern, e.g., \u0027PublishActivityAsync\u0027, \u0027PublishEntityChangeAsync\u0027, etc., or keep \u0027Write\u0027 but ensure the noun is consistent (e.g., \u0027WriteActivity\u0027, \u0027WriteEntity\u0027, \u0027WriteSecurity\u0027, \u0027WriteException\u0027). (signatures: IAuditClient.WriteActivityAsync | IAuditClient.WriteEntityChangeAsync | IAuditClient.WriteSecurityAsync | IAuditClient.WriteExceptionAsync)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ae6cd6c4d2a0c16d3305c22b05717b83d46eafd5658c6d09ab05fc3a9d6d7e94"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent query naming pattern: \u0027GetAuditByIdQuery\u0027 uses \u0027ById\u0027 in the class name, while \u0027GetInvoiceByIdQuery\u0027 also uses \u0027ById\u0027. However, looking at the broader API, there are queries like \u0027GetAuditsQuery\u0027 (plural) and \u0027GetAuditsByCorrelationQuery\u0027. The inconsistency lies in the singular vs plural and the use of \u0027ById\u0027 vs \u0027By...\u0027 patterns. Specifically, \u0027GetAuditByIdQuery\u0027 is singular, while \u0027GetAuditsQuery\u0027 is plural. This is a minor inconsistency in query naming conventions across the board.: Adopt a consistent naming convention for queries, e.g., \u0027GetAuditByIdQuery\u0027 and \u0027GetAuditsQuery\u0027 could be \u0027GetAuditByIdQuery\u0027 and \u0027GetAuditsQuery\u0027 is fine, but ensure all \u0027by\u0027 queries follow the same pattern. Consider renaming \u0027GetAuditByIdQuery\u0027 to \u0027GetAuditQuery\u0027 with an Id parameter, or keep \u0027ById\u0027 for all single-entity lookups. (signatures: GetAuditByIdQuery | GetInvoiceByIdQuery)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b6cfb74d57b5ccd844b11368392148ce613655221da6bb60411956f792ab61c1"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DisableTwoFactorCommand (Identity \u2192 Host): DisableTwoFactorCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bfa1613f4c8a758e82cc4073a3d7b660663cb431408ba19e1a0b4443f9e7d2a2"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MarkNotificationReadCommand (Notifications \u2192 Host): MarkNotificationReadCommand (context Notifications) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bdf05641db40cfa6bccc373c5f96cbf0bda45d2b4dc01f2e3e637aa51bc75222"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AddUsersToGroupResponse (Identity \u2192 Host): AddUsersToGroupResponse (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"981cd5c537cccf21bc98b9097139da15139b2a6b8ed9437785d98c2ce1904296"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AddUsersToGroupCommand (Identity \u2192 Host): AddUsersToGroupCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"110956cbfcd633b326802e1c599d147c94fc467ebea02006337b0c9a9f7b7bad"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CreateGroupCommand (Identity \u2192 Host): CreateGroupCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"472de194e224803bbd7cdc79aefbd17daa989f131b82a688ffddfd0b811da868"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DeleteGroupCommand (Identity \u2192 Host): DeleteGroupCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b158722335fba974d7b860dcd12e76f80bfe15edd15f23a9b81907976f1803d3"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UpdateChannelCommand (Chat \u2192 Host): UpdateChannelCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"455264c205f93f3e4bed1484c68986289e3fb2cdf7fae992a7e44e72e3fb7dcc"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MessageDto (Chat \u2192 Host): MessageDto (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d8fc3a00dfe941e4787fa168df2e71f7b8a61e55bbd6ee2aa7a96da492d34bc8"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SendMessageCommand (Chat \u2192 Host): SendMessageCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5165cc1cc3975a47a9ae25c18a993e20602275c9f0fb61468c97db907033344a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RestoreChannelCommand (Chat \u2192 Host): RestoreChannelCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9ca5f1ae67383ada5b6d938fa034ec5ad9973523c283a732de1b52d649ea5fc3"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RemoveReactionCommand (Chat \u2192 Host): RemoveReactionCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fc028a1835288c9bc4c25933a39988e0ffce1e864c8c66204cffa9be7134d767"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PresignedUploadResponse (Files \u2192 Host): PresignedUploadResponse (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5a325b89cc26d22e5d66bcff9cd049dd86565784eabafc8d7cc4671d88e477cd"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RequestUploadUrlCommand (Files \u2192 Host): RequestUploadUrlCommand (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"906075368ea161197281be4a8f79ef3a1c57895b47b895ce8c19a11483dcc9c2"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RestoreFileCommand (Files \u2192 Host): RestoreFileCommand (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5715cc8613777350795a9fb560b894ea6e75653c63aafc743b866d0202275908"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AddChannelMembersCommand (Chat \u2192 Host): AddChannelMembersCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"53a7771acb54b15817046399e0584456541f5f45d7b941719a145f72b7a8bf3f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RemoveUserFromGroupCommand (Identity \u2192 Host): RemoveUserFromGroupCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"016e9165211c5a4aa2a4fafdcb053c01e27201dd429026e49321538ac45da16d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AddReactionCommand (Chat \u2192 Host): AddReactionCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"155686b1733ae5b901dd4a205811cd16a05fe510a071b974e583d7bc04d44db5"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CreateChannelCommand (Chat \u2192 Host): CreateChannelCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"52c9bae0003f59e5473964ad5eb60e296f7e9e31a1f1b879a5b50c2bd5de619f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DeleteMessageCommand (Chat \u2192 Host): DeleteMessageCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"df13ab06a65c23a907512d86bd9150ee118cbeede4700097f43f126e319a09a2"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type EditMessageCommand (Chat \u2192 Host): EditMessageCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"67be3193b282d0846a7fcb0f909b8a04960383944a61d9601030f2d36e45014d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type FindOrCreateDmCommand (Chat \u2192 Host): FindOrCreateDmCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0d8dbf3e54da6dd193bb7de61f62cca9c1db8dd17d536ad544867b3db218b2f9"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MarkChannelReadCommand (Chat \u2192 Host): MarkChannelReadCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fc5c075b3d0b0485712aac1483416f57240a96f3d0ba33a4a5914d086253dd18"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PinMessageCommand (Chat \u2192 Host): PinMessageCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7ac9ca5ab8674d34d399adc4573382daa097b6bdf021d2d170d334c6a845da4c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UnpinMessageCommand (Chat \u2192 Host): UnpinMessageCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"47e987ddbcd168fab7370bca66f3c3b4bb6a85ae6a33ba8d4a6678d4c43dbab8"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RemoveChannelMemberCommand (Chat \u2192 Host): RemoveChannelMemberCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"14c6d0074ee928ca1af9714685d63191e136c4801931e425f7df6d3420e449c2"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ArchiveChannelCommand (Chat \u2192 Host): ArchiveChannelCommand (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a1f9d3012c52215598bb1a92ffbf6560fc8b9bf2860e9c16a6877d6171257a40"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UpdateGroupCommand (Identity \u2192 Host): UpdateGroupCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bf53a2aacdf18af0bca41c7ada6762e867c2a5795bcc0a93824382cf0e9b5de9"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TokenResponse (Identity \u2192 Host): TokenResponse (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a92fd3155e9c6d6042b43c11147170b4b9027394580a5f241e5fea3cf8070bac"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DeleteUserCommand (Identity \u2192 Host): DeleteUserCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7b264cb91d36d953346d2ae8a488dbb6baa2880ad5c6f30cdc67e880412df18d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ConfirmEmailCommand (Identity \u2192 Host): ConfirmEmailCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9c2c121920e783c5e4b57eb900bd949be233cc45adf529ec865cad263a84bfb5"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RegisterUserResponse (Identity \u2192 Host): RegisterUserResponse (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"37d2aa8568a3e3a3769baff34f49cf47d11172f65ef64c2599899c169dd777cc"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SetProfileImageCommand (Identity \u2192 Host): SetProfileImageCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8e1d4147dea470846b5eab3cc7e7e32143de95ee6a63d7b92ad5077e6dd39242"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ProductImageDto (Catalog \u2192 Host): ProductImageDto (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1dea58c1abff3b736af04c33a3e2ec19c00d3a732c7dfba3d4df2f117b9582ba"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AddProductImageCommand (Catalog \u2192 Host): AddProductImageCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e4337e9d5c71095c2a7fa1ff2bb9fa39caa27b41ce3ab85bb1c8f415ad01c0f0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RemoveProductImageCommand (Catalog \u2192 Host): RemoveProductImageCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"625b8b115690d1cf1385659286733ce23c8ad768b93b9d3931fc530be81889c7"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ResendConfirmationEmailCommand (Identity \u2192 Host): ResendConfirmationEmailCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5422872ca8fa7ebec8bff3f8566c22c640d5638de70f66e1c3dafbdfd351b4b2"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type FileAssetDto (Files \u2192 Host): FileAssetDto (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f0c2b23b11b1aa0b0dc5f6de4ff29773e568236a11099ed3844ffdb2633ea0a4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type FinalizeUploadCommand (Files \u2192 Host): FinalizeUploadCommand (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5614026aaec1aaf66e38fda675895d67c59edb85c77c1ba458009716efe3dc3d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AdminConfirmEmailCommand (Identity \u2192 Host): AdminConfirmEmailCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9758fae328266656e20f5b42ac2126f47f9a233a9dc1f513a76ea12e422173a6"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ImpersonationGrantDto (Identity \u2192 Host): ImpersonationGrantDto (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"241203e4affdd6c5ec617c275a47ff89e6419570fb43f61d8353252accb54ad2"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RevokeImpersonationGrantCommand (Identity \u2192 Host): RevokeImpersonationGrantCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0e49628e0b2f3ffe25acba251629a563b5408798abf6c7c7fce66a87fdb52fac"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ImpersonationResponse (Identity \u2192 Host): ImpersonationResponse (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fb977b0ca331aa5b3c2d32f2671df59beb437cff0ebc27d054263d81f91db30a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type StartImpersonationCommand (Identity \u2192 Host): StartImpersonationCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"da0d50f4064292ac1f743ae412a413b5df4ab7c539f562fe3d63c14090f4e7a0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DeleteRoleCommand (Identity \u2192 Host): DeleteRoleCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"17090fb9e72c581be5fa0125867ecc633eb61b8717f1e56ffbfe324c13bd9269"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AdminRevokeSessionCommand (Identity \u2192 Host): AdminRevokeSessionCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"92a28767128d11f14ce8270d33902e05c77520dc3852df4b97a7d1731670df44"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RevokeAllSessionsCommand (Identity \u2192 Host): RevokeAllSessionsCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"05d5281a98583484051fe427c83b9ac35f57a2a0c3ae3a10dc3d61d72218c2f4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RevokeSessionCommand (Identity \u2192 Host): RevokeSessionCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"da692be9f11e30ac2d7028e762204cee1a2c70c8682d3e9bfc5d59fa3643abaa"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RefreshTokenCommandResponse (Identity \u2192 Host): RefreshTokenCommandResponse (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7afb0b390cd49e729fca413a0ea6457ddbb8aa7a1e4b5f61ba92cbe9ada9956f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RefreshTokenCommand (Identity \u2192 Host): RefreshTokenCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a1f4e282a3d47b98b463f067ac70b4bee493dbac95ec901d6bcfedb383ce354c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GenerateTokenCommand (Identity \u2192 Host): GenerateTokenCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ef4a80f10a1f69da1540d2db34502d74d5024f17028affb24d6645dfb2e613bd"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AdminRevokeAllSessionsCommand (Identity \u2192 Host): AdminRevokeAllSessionsCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"884daa40c7979015316a179f15066370f72c120e7afb8e038b224500ae1089f3"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ReorderProductImagesCommand (Catalog \u2192 Host): ReorderProductImagesCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9c01df20e06a2850107b198b35b08de651521ed7a8c75205df50093a33ba68cc"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DeleteFileCommand (Files \u2192 Host): DeleteFileCommand (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1ef39f43e1266a3be944acf32b5669faf0cadeb744463eb4fedff85dc80943cf"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UpdateTicketCommand (Tickets \u2192 Host): UpdateTicketCommand (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"89f0a0e182a000d0f13ea39af2a3cd782a0e5a73ef5f5303943b142141592ae8"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DeleteWebhookSubscriptionCommand (Webhooks \u2192 Host): DeleteWebhookSubscriptionCommand (context Webhooks) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"02c98eea488d8d1d6f89e59389a7dddeb6aa2c0a25461cc923132f54e21ce0e8"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TestWebhookSubscriptionCommand (Webhooks \u2192 Host): TestWebhookSubscriptionCommand (context Webhooks) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8786ae9543f0a7dae5cbf6a63a2a4748bca2b32ffbdb6842baeb5b574da74eb4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GenerateInvoicesCommand (Billing \u2192 Host): GenerateInvoicesCommand (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8883d72815e978c2938c448c2c3eb7c36ba73d9dac7129dd15a823f04a15fec9"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type IssueInvoiceCommand (Billing \u2192 Host): IssueInvoiceCommand (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f5657bd33255ad5c069ba6ed37feb86b1f4b965e2aace57dd975535461b39244"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MarkInvoicePaidCommand (Billing \u2192 Host): MarkInvoicePaidCommand (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4d3aeefaa805307a24277fe866b15d3529a5ad907ec97425ea6b97d0f112967d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type VoidInvoiceCommand (Billing \u2192 Host): VoidInvoiceCommand (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"23e1f413946f539faac28a366d4a7799490ed0eda1a2ecc2d0cec11b5fb91a1c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CreatePlanCommand (Billing \u2192 Host): CreatePlanCommand (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"eb04beb2b593df9165432060101a031a3568ce329b4f141ac0adfca1765129a0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UpdatePlanCommand (Billing \u2192 Host): UpdatePlanCommand (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dc8b2cc1473f60b6a82b3111581b6bdcaa1da9234e5382f91bbf419f1021fec4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AssignSubscriptionCommand (Billing \u2192 Host): AssignSubscriptionCommand (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b1885cc820944b011ff50282ed1756a3fafce0aa72ed06d4cfc68c8504435608"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CreateWebhookSubscriptionCommand (Webhooks \u2192 Host): CreateWebhookSubscriptionCommand (context Webhooks) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6c59fc22b4e17eaa167b5e20f5f2f92ebf7dcea7b40ac25bc0ac14befa32575c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TwoFactorEnrollmentResponse (Identity \u2192 Host): TwoFactorEnrollmentResponse (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"671972381cce7d2f7e3b60f00f3897c652ab8c84c2066e2fbf238b57af252eb5"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type VerifyEnrollTwoFactorCommand (Identity \u2192 Host): VerifyEnrollTwoFactorCommand (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1f233b5577dfb4c592ac225d7fecd5841cb276f75d2e64d554ba688ac4ca0226"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AdjustTenantValidityCommandResponse (Multitenancy \u2192 Host): AdjustTenantValidityCommandResponse (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6fbf7e84ee34116fc17411f859a587e16233befcc8168d805a0753c2018bab31"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AdjustTenantValidityCommand (Multitenancy \u2192 Host): AdjustTenantValidityCommand (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5aaf422174cc5e73bfec613730c02e792bd8abb17f923f46a643663128c94f6e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ChangeTenantActivationCommand (Multitenancy \u2192 Host): ChangeTenantActivationCommand (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8a52dd4c0aaffb1f4661794eb7fcc0fea21d8e630f94e0ac83c201dae0d582ac"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CreateTenantCommandResponse (Multitenancy \u2192 Host): CreateTenantCommandResponse (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"50bb79b976758c31246813f2f6e271b1d252d8ba8448cc82a9327505bd7a4d89"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CreateTenantCommand (Multitenancy \u2192 Host): CreateTenantCommand (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"19fd94b5e5ad217bf02c2316d6d4df427c4bc167ac568d1e3b609bbdf52ae66b"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CaptureUsageSnapshotsCommand (Billing \u2192 Host): CaptureUsageSnapshotsCommand (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"71e80bbe25d2de7197f440eb09f5eecb6682c5faac96dd4e94bd1ee9c6efc010"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TenantProvisioningStatusDto (Multitenancy \u2192 Host): TenantProvisioningStatusDto (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9b46a6defb6b60a1a2d01a8272099d96078f8f88ffc0378edc53120599eee0d7"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RetryTenantProvisioningCommand (Multitenancy \u2192 Host): RetryTenantProvisioningCommand (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"59dea372833dc988b01f8f83895e7f044680fc649b2e1312f51a9ddd038248c4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UpdateTenantThemeCommand (Multitenancy \u2192 Host): UpdateTenantThemeCommand (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1218bea953a2714568ba9252bdb239541e4210698e69c38ff41342174ba43dcf"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RenewTenantCommandResponse (Multitenancy \u2192 Host): RenewTenantCommandResponse (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"de5e8b62913d26af0448d73d4c0f462977ecef66e76b341252258af231fdbc22"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RenewTenantCommand (Multitenancy \u2192 Host): RenewTenantCommand (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5f3c6c10971bae84c8a27b823c3ed93e4b2264bc3f76cae5d56b2a2c1f7360e8"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ApproveTopupRequestCommand (Billing \u2192 Host): ApproveTopupRequestCommand (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c57bb66925cd4498518cbc9cca6e3c68decfe5658b4ac402e5842e1d327cdf05"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CreateTopupRequestCommand (Billing \u2192 Host): CreateTopupRequestCommand (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ee3487cfc2f4d988c22afe5d7a2329fc090a16a3de52f0c6493b95771551e4a5"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DeleteProductCommand (Catalog \u2192 Host): DeleteProductCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c736999d0cb0fe02b5bf71056918a370d0f4baffc73d3665f16e2bfe2165e01a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RestoreProductCommand (Catalog \u2192 Host): RestoreProductCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"56e02c3a50080dda15456ed00a47be60092067acde094f36cb8327bc1baa1f34"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UpdateProductCommand (Catalog \u2192 Host): UpdateProductCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"52d5c1646f7babf077cbd3ee78e97736842f2edfad36d2487e311a739961ca81"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AddTicketCommentCommand (Tickets \u2192 Host): AddTicketCommentCommand (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dfa8f5566590cf719c83f95a5106c3c0e97eb78263c5b8e164f3d123c96e2771"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AssignTicketCommand (Tickets \u2192 Host): AssignTicketCommand (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7b2bee2e0a0fd3458fdaff60424e3d21a2cb2eba0334b70b2e54d96b450ae5df"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CreateProductCommand (Catalog \u2192 Host): CreateProductCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dc84e11ebc29e9973a2e991b6c14cc8ec56c58b73dc9e6013b79f588b7e36041"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CloseTicketCommand (Tickets \u2192 Host): CloseTicketCommand (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d9bfb93edd949f1ec6ccf27d6f269fd0f072687202ff7eebe2e71c2a260ac070"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DeleteTicketCommand (Tickets \u2192 Host): DeleteTicketCommand (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"338f72bdfb7547d3f6f473fa6a27401f66dd79b8ca60d646bd2f1098ee78cdc6"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ReopenTicketCommand (Tickets \u2192 Host): ReopenTicketCommand (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"15db9036430d09d0682713d2c9d62e76863acc38eef22b49cc5ede6d0ad9d9db"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ResolveTicketCommand (Tickets \u2192 Host): ResolveTicketCommand (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e240f0a4237e5bd649ca6c077a26b8a56044592adc684f0b6b8e0874b35b05a1"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RestoreTicketCommand (Tickets \u2192 Host): RestoreTicketCommand (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f672477846b2c0102e4fdb9791a6e50426208f3d0071388caa68dc7a031264bc"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CreateTicketCommand (Tickets \u2192 Host): CreateTicketCommand (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"030744d4167873c246c3f00f2c40b816bc35470caacb9296481b3da404ecd08b"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ChangeFileVisibilityCommand (Files \u2192 Host): ChangeFileVisibilityCommand (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f913c6c18ab78d96bfe69e50615584819753f6e941a3e9e3238225cb1c0446f0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ChangeProductPriceCommand (Catalog \u2192 Host): ChangeProductPriceCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ad3e3e78a3ccac7992557eb22e963f27a024da09b4b61938805add2be8f4b892"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UpdateCategoryCommand (Catalog \u2192 Host): UpdateCategoryCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"63f55a39e98af86e4a5239f99655bc5a1c3fad2936e12da88e2374f2baa902e3"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RejectTopupRequestCommand (Billing \u2192 Host): RejectTopupRequestCommand (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2d2101e24d540e545fa542f343f4877d4e3ab936dd01acaf958da98af146492"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CreateBrandCommand (Catalog \u2192 Host): CreateBrandCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a58c528af1a79d5ab43967e4dcdb22b0b786e6da6df3e04d3ba5ecd483402d63"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DeleteBrandCommand (Catalog \u2192 Host): DeleteBrandCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"72d70124fbfd98ea7a4af0d4186c9d8d49648abe8835e3495346322ba89c75ed"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type AdjustProductStockCommand (Catalog \u2192 Host): AdjustProductStockCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91a3fcd7c9c85df9b4f40e89683a504040777c346218e4a65fd901e2aaf9801e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RestoreBrandCommand (Catalog \u2192 Host): RestoreBrandCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"745e842575bbab6355dc6a019d4e383d824568886ee49cfdc867a8fca07b0531"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UpdateBrandCommand (Catalog \u2192 Host): UpdateBrandCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"550879883f8c71be9d429c7caf17808dc4bf16fc511fe4e3fde6e23e416e2253"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CreateCategoryCommand (Catalog \u2192 Host): CreateCategoryCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"05f0b25f07267ae75f0c028b3eb947b66517ec895f69c9e3f7ae4384b359f645"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DeleteCategoryCommand (Catalog \u2192 Host): DeleteCategoryCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3443ceecbc790c6e322115366cd7ab6a6fafdb066912b3816d35ea567ed63381"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type RestoreCategoryCommand (Catalog \u2192 Host): RestoreCategoryCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"29445c97a76d35c1ab87c3a59f4702da18e53c6e5d2d445b02185947a7aa995e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SetProductThumbnailCommand (Catalog \u2192 Host): SetProductThumbnailCommand (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e2b88b3dfd2a1a3b9aa07e5f729d0fde095abe42ec9fc41fbb8af93815d0bdac"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type DiscoverChannelsQuery (Chat \u2192 Host): DiscoverChannelsQuery (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"82c59e2f95383f4f44f1e6f86e987aa02f17d4c80c3425fb19840187b5259603"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ChannelDto (Chat \u2192 Host): ChannelDto (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"acf61581501115e071c1aff8069661ae9ebdbee8a21866e15a923ba1530c68fa"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetChannelByIdQuery (Chat \u2192 Host): GetChannelByIdQuery (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0e11ad82778621f3efef552341ce50fb0ee0e754135830aae1ee1a9d595d745b"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetPinnedMessagesQuery (Chat \u2192 Host): GetPinnedMessagesQuery (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9f3daf1712c8f7d10682bb66d0447c2a91bd96245f001e9244018cce1b7460cb"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListChannelMessagesQuery (Chat \u2192 Host): ListChannelMessagesQuery (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4c55eef45f620b30cc5b537b29d0956061ac53a72cd62b1e9ba1431d73fb02f6"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListMessageRepliesQuery (Chat \u2192 Host): ListMessageRepliesQuery (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"37b0bcc8255c92cc50caca36ea1b6aa4d779f35cd9c66f5d6aed46113bb5bdbe"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListMyChannelsQuery (Chat \u2192 Host): ListMyChannelsQuery (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7c35ad059451b5a63555fd985e1bd8d6641d710da2a3d53d7a3aa001ce4e3985"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SearchMessagesQuery (Chat \u2192 Host): SearchMessagesQuery (context Chat) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c09860b5e4466d352057c1cf7d5f7709cb1708ca10e42b919d08c0a59410fa7a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListNotificationsQuery (Notifications \u2192 Host): ListNotificationsQuery (context Notifications) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a0874006223f0f679daeb04ea00f6b29680fe3977dadf44a41e95d870923841a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetGroupByIdQuery (Identity \u2192 Host): GetGroupByIdQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5c553ae19444da3a9f7401d5086c570f0aba6f5c4841c617bf09f05343ca0fbc"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetGroupMembersQuery (Identity \u2192 Host): GetGroupMembersQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"13f03623896ee62ab6781eb9c01cba499af26892bc526c76d9f7c47662b82a23"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetGroupsQuery (Identity \u2192 Host): GetGroupsQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"62d104d93acc0dbbbc46f6f6e6442b93a1e95348ca1b0e94a9ec9e4c31fd37bf"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PresignedDownloadResponse (Files \u2192 Host): PresignedDownloadResponse (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1ff4a803fb661cd128317f75a3f8b7633f1977ce2c72f44d7d2cfef363ec0789"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetFileDownloadUrlQuery (Files \u2192 Host): GetFileDownloadUrlQuery (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"914e7a7e630b312b9bdec87aa3db2d14aa10f2f2e84c94e2f2fb362c6910dbea"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetFileMetadataQuery (Files \u2192 Host): GetFileMetadataQuery (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b0cebe5fda7f7b5aec57bf9df850c441e65bfe118c9edfe58cb6727aa52023a1"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListMyFilesQuery (Files \u2192 Host): ListMyFilesQuery (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f0124b7643cfdef73c0008bc5ad96651aa135e40481faab6c030249234bd2a42"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListSharedFilesQuery (Files \u2192 Host): ListSharedFilesQuery (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"122fe3bb65d916addeaa9bbcdb0b9c90fec9f3342cf44478ca5ac816af6efce6"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListTrashedFilesQuery (Files \u2192 Host): ListTrashedFilesQuery (context Files) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"01fe3ccb2c816406c623e59b837de58db22bb751a919cd179b2cb5faad6ccdb5"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetImpersonationGrantsQuery (Identity \u2192 Host): GetImpersonationGrantsQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9078bd5fcc54db1dd7029dedbc55f0db0409c36896d3d76c0b6e1b835a214ce9"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetUserQuery (Identity \u2192 Host): GetUserQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"337865329427ed867f5ec67161d1f4e61cdef570caecb8d950c63b3e5025fbb8"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetUserGroupsQuery (Identity \u2192 Host): GetUserGroupsQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2308308f9ae4606631e663ac8d3d2a388318a5f679543c99607b98b613f92d43"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetCurrentUserPermissionsQuery (Identity \u2192 Host): GetCurrentUserPermissionsQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d654c8b4697990bc870dc627b44c40cf9665a90e97b338c8966353b5dca378d7"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetCurrentUserProfileQuery (Identity \u2192 Host): GetCurrentUserProfileQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"476c2b51dfe1eb9b0beccd8d64ffe8322762d5c775b7400bfd5a3c363a611937"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetUserRolesQuery (Identity \u2192 Host): GetUserRolesQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3e92076bf237d2c2c4ad841a7e7fd040a466b29989519d15e4e2141cd65e65fb"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type InvoicePdfResult (Billing \u2192 Host): InvoicePdfResult (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0671424fbc72359595f574116596339bd25b69f430ac0decf2ced0ee05ebac66"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetInvoicePdfQuery (Billing \u2192 Host): GetInvoicePdfQuery (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"14a64021d4f7d651e63dfb0c889ccd6c871ffa4843f3b99000e2e5ee2919df90"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetRoleQuery (Identity \u2192 Host): GetRoleQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ba85f3240438f351a3d68b582ced180a501994a4bd2570e56c164aa17df92e6f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetRoleWithPermissionsQuery (Identity \u2192 Host): GetRoleWithPermissionsQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b2bae885d53aebf054e004f6668743ce58e039d0d8d1988a8431ee63cc85087a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetTenantSessionsQuery (Identity \u2192 Host): GetTenantSessionsQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"179fe8595de2e7c50444e5c22271daf7a27661a34d20c60d3b5111f8c4fd250c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetUserSessionsQuery (Identity \u2192 Host): GetUserSessionsQuery (context Identity) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9928d0cda503f6603b82961d79cf99ee55eef32dbb7415aa7c313bf9ba460871"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetWebhookDeliveriesQuery (Webhooks \u2192 Host): GetWebhookDeliveriesQuery (context Webhooks) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0cdb69c2387c6ff73f002b7fcdd64ec1f81f0eb9da33ecc6d57bdb113349ab4b"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetWebhookSubscriptionsQuery (Webhooks \u2192 Host): GetWebhookSubscriptionsQuery (context Webhooks) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8dcf53844a448bfb1e9fc60d0386c973c96e8fa6fb337cf420a10b4e4d0316d4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type InvoiceDto (Billing \u2192 Host): InvoiceDto (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"62f98a2a0f657b260c3e6a71e86b11c276fb55f765fb7001cf85fa5dc5937feb"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetInvoiceByIdQuery (Billing \u2192 Host): GetInvoiceByIdQuery (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3b196e5f0f18fbab3b81b41c5c562d3eabf998c75781f88fc347ce112724143c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetInvoicesQuery (Billing \u2192 Host): GetInvoicesQuery (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"499c6909030e91bd85a3cad880796f7602a76fbb8b91fbac2556aefd928becaa"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetMyInvoicesQuery (Billing \u2192 Host): GetMyInvoicesQuery (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1f0809114848b67b94c27d0d3ddea6e43420e90b58ff7f4e24a666ad3ca83463"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetPlansQuery (Billing \u2192 Host): GetPlansQuery (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f8b0070b6794e8771b8f70d5dbfff5e1263f7abe48455959bad7a3804f7f68c2"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PlanTermResponse (Billing \u2192 Host): PlanTermResponse (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5400cf94d19185de74aaed548cbe94c0d479c72d3818af647c62fc7d3b522698"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetPlanTermQuery (Billing \u2192 Host): GetPlanTermQuery (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0f046b50f35e09020c9e3b540cf2309b8c8c9daf60c91e0352f7296de06d6052"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SubscriptionDto (Billing \u2192 Host): SubscriptionDto (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6cbab0615a4502423c510a6be0e05ef8a81d60e451462d06dba309a2ef1ed844"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetSubscriptionQuery (Billing \u2192 Host): GetSubscriptionQuery (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4243cb2165a2c815005e10abf44595176cb7f6bad0fc5fe927906b30e6d576a7"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetTenantStatusQuery (Multitenancy \u2192 Host): GetTenantStatusQuery (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f27222cd28c6133bebf6318a7479948eef1dd0f1b2dd5416e09baa83c1633b83"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TenantThemeDto (Multitenancy \u2192 Host): TenantThemeDto (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"011813f87bd0ee45cdb21bcf334d2e0697db688c241bd69c08555b29bbbda335"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetTenantProvisioningStatusQuery (Multitenancy \u2192 Host): GetTenantProvisioningStatusQuery (context Multitenancy) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"adfe2ba07f73b66575b64495101b120baa34e44309cc30dc41e6e6a9b1ca43c9"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetAuditByIdQuery (Auditing \u2192 Host): GetAuditByIdQuery (context Auditing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9b7aa8c3f239edbc8314f33977733217907b5a12533c7dd29ef9e0241b965d23"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetUsageSnapshotsQuery (Billing \u2192 Host): GetUsageSnapshotsQuery (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"713f2833edc2629cfa8f4685121efb57ab6393db1c77fd933c9a5913439519ad"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ProductDto (Catalog \u2192 Host): ProductDto (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1af36ffa5792f461174616e74aaf63263fe4c53a5c38a3ecfe720e2bf865164a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetProductByIdQuery (Catalog \u2192 Host): GetProductByIdQuery (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"587f8da49fd545d579d9aa3c93de48e2590167f35f9cd9ecbe4afa11a5e3c8d6"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListTrashedProductsQuery (Catalog \u2192 Host): ListTrashedProductsQuery (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4336b29d7dc599d31fb53774a6aee998810f842e4f26ae22e3a2ad58b31598e1"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SearchProductsQuery (Catalog \u2192 Host): SearchProductsQuery (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"30097f356579d0d2686e56bd604335aef93b7a8b488c24deba92e58e44be8687"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TicketDto (Tickets \u2192 Host): TicketDto (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b3156339e0dede614395c0f8825197d67a428a16e9aac4ddf7d67ca00b48e451"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetTicketByIdQuery (Tickets \u2192 Host): GetTicketByIdQuery (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5a0e738376b8e4800688a4268d96a04c633080f303698aa25dbf2bc1c17350a8"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListTicketCommentsQuery (Tickets \u2192 Host): ListTicketCommentsQuery (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a77da8a6fb8330ec34a5b6c544580f7da241cf194efb26eb5d4d9c4941d25ab9"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListTrashedTicketsQuery (Tickets \u2192 Host): ListTrashedTicketsQuery (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"50f42964c871a8078278e8f18247d698a4ea15f22db403fd5de340f1be7231db"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SearchTicketsQuery (Tickets \u2192 Host): SearchTicketsQuery (context Tickets) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7ef8e18adc6d03e602f721f012ae1d4355ce7f0283468142467a6a71b537da5f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetMyTopupRequestsQuery (Billing \u2192 Host): GetMyTopupRequestsQuery (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ee61a0ebadb83258e83962015d6ab4a5c97bc6863b07b539cf02ccb067170f4d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type WalletDto (Billing \u2192 Host): WalletDto (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"170f419933f18c84d35255ab5e085dbec8b57a32614c81b29a43096b4cc27462"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetTopupRequestsQuery (Billing \u2192 Host): GetTopupRequestsQuery (context Billing) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"db003cf43d08cd8b03835102e28de682e87e7f19d60d5f544f3819dd627eaefd"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type BrandDto (Catalog \u2192 Host): BrandDto (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"12e014aab345a2ced9f1991926ecff64af8ced171e0cf564339da43a9db25729"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetBrandByIdQuery (Catalog \u2192 Host): GetBrandByIdQuery (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cfdbe06ba6deb34cd83d1f72d9d83388a1aa98e2ee27dcfdcd0f4e8c6a6ddd86"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListTrashedBrandsQuery (Catalog \u2192 Host): ListTrashedBrandsQuery (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b4b94e219fddd4a108af551b2957f238b6f0f9b0a4940f0692aff3dfedeb4327"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type CategoryDto (Catalog \u2192 Host): CategoryDto (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"77ad80525697e97163fe24c36aeb5e76d57b6a2b75c8a64733e175a5e209b0e0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type GetCategoryByIdQuery (Catalog \u2192 Host): GetCategoryByIdQuery (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"72699e1090f1de76382d8b80d863d04437c367bd9d15f46d6d3e259de3eb504b"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ListTrashedCategoriesQuery (Catalog \u2192 Host): ListTrashedCategoriesQuery (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"77b1cef6f02a4329169e1e103171983d39468a92f521d4c399add01caae41ac1"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SearchCategoriesQuery (Catalog \u2192 Host): SearchCategoriesQuery (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"28117e2a79b8d9382e94296341cbdaafe1eea297751513029b99401350abf0b0"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SearchBrandsQuery (Catalog \u2192 Host): SearchBrandsQuery (context Catalog) is exposed in Host\u0027s public surface via Mediator.Send \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"42359a66396fd721ea308698af6bf4a62f03ee6c8d45eaed81348b08e9a8836f"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type PasswordChangedEvent (Identity \u2192 Host): PasswordChangedEvent (context Identity) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2d3b34114f004a0d1cd4e0c02cff19b4a7eb732ab5402990d66335e862afa794"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MessageEditedDomainEvent (Chat \u2192 Host): MessageEditedDomainEvent (context Chat) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9108eee563838a12e6888f02412fa232a0a2246da3ef618c10f88113d6fae540"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MessageDeletedDomainEvent (Chat \u2192 Host): MessageDeletedDomainEvent (context Chat) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a50d6a0e993ceb9c286c2950999f7d1408aa7ce63bcf1aa4554c35585e612e16"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MessageCreatedDomainEvent (Chat \u2192 Host): MessageCreatedDomainEvent (context Chat) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0b22ec2f1d191971d5edb9b68cf8630fa9aab36b00709b3ff5d9dccf98251279"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ChannelMemberRemovedDomainEvent (Chat \u2192 Host): ChannelMemberRemovedDomainEvent (context Chat) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"40f0475c2a9696741edb6a5bfd094b096bcf663096e15c53e47b0e47dfd1f115"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ChannelMemberAddedDomainEvent (Chat \u2192 Host): ChannelMemberAddedDomainEvent (context Chat) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5c9266e0d5ff744b3568eb3686d45ab3bfd4b0705a941a335c4d06210679b51c"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ChannelCreatedDomainEvent (Chat \u2192 Host): ChannelCreatedDomainEvent (context Chat) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c3fa490e76baf0eb7ff5db3f9fe42300e28eb57127c83854310acdb05ab0f303"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type FileSoftDeletedDomainEvent (Files \u2192 Host): FileSoftDeletedDomainEvent (context Files) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ca548307b13ff49e3325cd07f3597f53928c3b1dd2a0fca1531847cc53ff1286"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type FileFinalizedDomainEvent (Files \u2192 Host): FileFinalizedDomainEvent (context Files) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dee1688dd28acbfe2eb2dbf0f3f224ce73ee97bdab05d8f19f630d97503df93e"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TicketStatusChangedDomainEvent (Tickets \u2192 Host): TicketStatusChangedDomainEvent (context Tickets) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8b69720f32e1b9ce036e7c7f5658865e6f4706512eeccf4d8688d9c4804ed112"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MessagePinnedDomainEvent (Chat \u2192 Host): MessagePinnedDomainEvent (context Chat) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8ccb1b113e8f8224e3ba6411731d0e9643e6870168e162fe2823e08f6473c3f9"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TicketCreatedDomainEvent (Tickets \u2192 Host): TicketCreatedDomainEvent (context Tickets) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8bb59842eb5b024f5c0604d98f8b4fda3fef04be07c3212cde8005b8709c1d0d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TicketAssignedDomainEvent (Tickets \u2192 Host): TicketAssignedDomainEvent (context Tickets) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b64ec60bc651746d9ebed8904e832dd995720cb78c0d8a358e9bc25e82ec1b74"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ProductStockAdjustedDomainEvent (Catalog \u2192 Host): ProductStockAdjustedDomainEvent (context Catalog) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"9503becb3db3d5fd44a623159ba2efeeca7f0052e4eb7813e2196f80d6426d99"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ProductPriceChangedDomainEvent (Catalog \u2192 Host): ProductPriceChangedDomainEvent (context Catalog) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ff8817cb8c254b0219d9c41c3f78a32d752740b144dd03ad4b23cab9c6c400a9"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type ProductCreatedDomainEvent (Catalog \u2192 Host): ProductCreatedDomainEvent (context Catalog) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5ed63ee508e066db981875b22f23f114d26ec63412c4c24c8be0ca26a40475a4"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UserRoleAssignedEvent (Identity \u2192 Host): UserRoleAssignedEvent (context Identity) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"294cabcc217c7f2f28c668fcb427c327633b531d82d116d7af96ad704f6ed8fa"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UserRegisteredEvent (Identity \u2192 Host): UserRegisteredEvent (context Identity) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f2ef4ca494bd42f078463b06c680572f664d284568b30bfb35f3987ace495fce"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UserDeactivatedEvent (Identity \u2192 Host): UserDeactivatedEvent (context Identity) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"170272fa0f388ebed6aa639ebfa8c44d0021c041c830eed25a77a132ffb0ed81"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type UserActivatedEvent (Identity \u2192 Host): UserActivatedEvent (context Identity) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b618d98f537e18bdbb3d819877a48f45f6e90c2b28be7a7c7ccf47866fceec60"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type SessionRevokedEvent (Identity \u2192 Host): SessionRevokedEvent (context Identity) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c151ed9efc7f755f5dc1ef0a23f89952a623c4a245d18a0c5dc6791c32b66daa"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TicketCommentAddedDomainEvent (Tickets \u2192 Host): TicketCommentAddedDomainEvent (context Tickets) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1023623e234d690cb3098b58f8896cd508fab6ef528e2cac268796ab33a3f29d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MessageUnpinnedDomainEvent (Chat \u2192 Host): MessageUnpinnedDomainEvent (context Chat) is exposed in Host\u0027s public surface via Mediator.Publish \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"589407f143f4146d00f4a60986bac3dad74d5141ee226181d0c0c27f05a40376"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TenantRenewedIntegrationEvent (Multitenancy \u2192 Billing): TenantRenewedIntegrationEvent (context Multitenancy) is exposed in Billing\u0027s public surface via TenantRenewedIntegrationEventHandler.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"76500a0edb14977f2913250dd4e92f9c585ee5ee63d5526dbd326ef463dc5554"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TenantSubscribedIntegrationEvent (Multitenancy \u2192 Billing): TenantSubscribedIntegrationEvent (context Multitenancy) is exposed in Billing\u0027s public surface via TenantSubscribedIntegrationEventHandler.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"634cb32044f35af429c450557885e8c1c389a61d64f1c9e0208bfa78d988e30d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type FileAccessContext (Files \u2192 Catalog): FileAccessContext (context Files) is exposed in Catalog\u0027s public surface via ProductFileAccessPolicy.CanReadAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"568160404966bc278b3768e08c5131c4f9630460051148b155c230591bedbd43"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type FileAccessContext (Files \u2192 Catalog): FileAccessContext (context Files) is exposed in Catalog\u0027s public surface via ProductFileAccessPolicy.CanDeleteAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"568160404966bc278b3768e08c5131c4f9630460051148b155c230591bedbd43"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type FileAccessContext (Files \u2192 Chat): FileAccessContext (context Files) is exposed in Chat\u0027s public surface via ChatChannelFileAccessPolicy.CanReadAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4f0e47d8766d8d149ffac50c3859ec559c0c74297742f194423ffd54e9c0039d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type FileAccessContext (Files \u2192 Chat): FileAccessContext (context Files) is exposed in Chat\u0027s public surface via ChatChannelFileAccessPolicy.CanDeleteAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4f0e47d8766d8d149ffac50c3859ec559c0c74297742f194423ffd54e9c0039d"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type InvoiceIssuedIntegrationEvent (Billing \u2192 Notifications): InvoiceIssuedIntegrationEvent (context Billing) is exposed in Notifications\u0027s public surface via InvoiceIssuedEmailHandler.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fe656859bd5fe67afbffe4c39203933bf46ab45fadc952e9037a0ecf23665275"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type MentionedInChannelIntegrationEvent (Chat \u2192 Notifications): MentionedInChannelIntegrationEvent (context Chat) is exposed in Notifications\u0027s public surface via MentionedInChannelIntegrationEventHandler.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ccd6d9f6c43f500a6dcfec31dfa5d0b534efff745de0be5a749c82fbf49702ca"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TenantEnteredGraceIntegrationEvent (Multitenancy \u2192 Notifications): TenantEnteredGraceIntegrationEvent (context Multitenancy) is exposed in Notifications\u0027s public surface via TenantEnteredGraceEmailHandler.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7d2325a5e563ddab667cc3c9bfa3d54ff6a0adb84bb3f864fa792ac2015d7fcb"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TenantExpiredIntegrationEvent (Multitenancy \u2192 Notifications): TenantExpiredIntegrationEvent (context Multitenancy) is exposed in Notifications\u0027s public surface via TenantExpiredEmailHandler.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6743a9053b6345e0e83c101981403f07b14f8568a2b9453b0e5910d9dbf0806a"}},{"ruleId":"D23","level":"warning","message":{"text":"Cross-context type TenantNearingExpiryIntegrationEvent (Multitenancy \u2192 Notifications): TenantNearingExpiryIntegrationEvent (context Multitenancy) is exposed in Notifications\u0027s public surface via TenantNearingExpiryEmailHandler.HandleAsync \u2014 couples the contexts."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fde8dc8bb490305e6b4455e832c7bfe1470aa22359260f1e6c24673e4ff791da"}},{"ruleId":"D26","level":"note","message":{"text":"Split Modules.Identity: A generic catch-all name that is huge (9k LoC) and sprawls over 62 unrelated namespaces. Suggested: by namespace: Modules.Identity.Security, Modules.Identity.Persistence, Modules.Identity.API"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ef909ebf52b1d6e63827dc90afbe270339b868ea5ccfc29d2f4016432e62fe4b"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e16a5fadc4d711dbf42c7f3da548899eadd179a0d84f2691ce92fe4b9d2754b5"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d0a1e842a6444e50001b898ccf74f434510d69463764e3c9d30754c7e0cad6e7"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d0a1e842a6444e50001b898ccf74f434510d69463764e3c9d30754c7e0cad6e7"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3b65fb7cedd13cfdf9e4b5d7bdab77a0ab1238acbb23b33597c752ec097403eb"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f790dbb7caea74dfb883931db1ec144dbe9582efe592f4c83420c5909005fa3e"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"724dbb2f1f8095cc99604514981f459f3740d6dc489b99d4ee96f56eb4e42651"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f6186e4594ac318875c5848f8cf781413c1826bd407bca3498644ebbdeaab3ee"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f6186e4594ac318875c5848f8cf781413c1826bd407bca3498644ebbdeaab3ee"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"724dbb2f1f8095cc99604514981f459f3740d6dc489b99d4ee96f56eb4e42651"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"16c5335dce83293786a947fda7faec5b51d00edb5f743237242043fccf35e786"}},{"ruleId":"D28","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"42bfcf726ed7e21dc261040dcd65c3852c4f93772e0c255faf92900083b98883"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f363d85c4614611c6dcdaea48c4990699fc39f672f53f131c418dbe757bfab89"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"556be188fa5fb845debaba1f85305ceb2a2350dbce12ccd3c92acdca2ff7b0ec"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"556be188fa5fb845debaba1f85305ceb2a2350dbce12ccd3c92acdca2ff7b0ec"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"556be188fa5fb845debaba1f85305ceb2a2350dbce12ccd3c92acdca2ff7b0ec"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"556be188fa5fb845debaba1f85305ceb2a2350dbce12ccd3c92acdca2ff7b0ec"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"beebac5ff8bfcad84f65fa67763edc33fc0e278040a2d0649e1bd1f7acb5641d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"beebac5ff8bfcad84f65fa67763edc33fc0e278040a2d0649e1bd1f7acb5641d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"beebac5ff8bfcad84f65fa67763edc33fc0e278040a2d0649e1bd1f7acb5641d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"beebac5ff8bfcad84f65fa67763edc33fc0e278040a2d0649e1bd1f7acb5641d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"beebac5ff8bfcad84f65fa67763edc33fc0e278040a2d0649e1bd1f7acb5641d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"beebac5ff8bfcad84f65fa67763edc33fc0e278040a2d0649e1bd1f7acb5641d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"beebac5ff8bfcad84f65fa67763edc33fc0e278040a2d0649e1bd1f7acb5641d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e88b3d2c93dc47ae98bef3e52b6d1cf13d92e85a56c0a214c01e635806603603"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e88b3d2c93dc47ae98bef3e52b6d1cf13d92e85a56c0a214c01e635806603603"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e88b3d2c93dc47ae98bef3e52b6d1cf13d92e85a56c0a214c01e635806603603"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e88b3d2c93dc47ae98bef3e52b6d1cf13d92e85a56c0a214c01e635806603603"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e88b3d2c93dc47ae98bef3e52b6d1cf13d92e85a56c0a214c01e635806603603"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e88b3d2c93dc47ae98bef3e52b6d1cf13d92e85a56c0a214c01e635806603603"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e88b3d2c93dc47ae98bef3e52b6d1cf13d92e85a56c0a214c01e635806603603"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8e0bd2ab26f54ea7cf010a74984233b8356719ba1a37d6277034874422e5c49d"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8e0bd2ab26f54ea7cf010a74984233b8356719ba1a37d6277034874422e5c49d"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"973b7fafe160857217394832002d28893e5b009225ffc845d9126270373c553b"},"taxa":[{"id":"CWE-326","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"12e4c7e6c53d89af863120b4b968099f7c0aa1dffaaa741083f41af76c225181"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"af119be541199b016f2bf8eb420bb4359c2846412a1570520b79cc51fb061cae"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"286dab71466afc549ba7830376433310d88cfcc316fffba8d92de04665a90b00"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fe99c41dc2c4a2371dfa4b9ba0f6d4ded0a9ed32efc9e5793fe79bdcab6945b4"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"76f59fbad9232fab03d6006bf5256942d3fc72371a7e06fb9801b72bfa03dfb2"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1c356fc40b729e770109cd7ceff34b2c2944db7afcf99110a98f5d531898175c"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"521d9e95a9b66707184a1921a97e82dd82ff7b4c129d6d26d6c4a7c530c91c52"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fca517496e9ee570c7374c46f96a25bf82ed3dbcf438dc2081704203de94f16d"}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f81350ed10c88c12afc7314e96ca5676bee48de1acbc9598e16d747f510beb42"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5bbaa277fdf1d769aa9b2d91e6e6a2afa18ee67866f017fbfe73f6c3e02a8bbd"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5a5620497d3bbe60afb8bbb367675faf7d5a2f6aa5378cdec0870c76db20d28b"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"245ec16727cf7edd2566328f9b6a1f7fac3c19882a82fb982af21dc16f6c1346"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"22006e0815fbb5cf6e7f0e5a1ca168d6f99ed115950528a5226a775891a42045"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"18129df0404c08e523730863a2e3a3e7038a8e863c30cbbf02d7b858d7ba2adc"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ed95a91cb16e17a57e5c53b373b93da280e6fb0ff3c18d4375391a0687d374c2"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"702b93cda3f47a4f3ba07fdfd55d0cc7cefec9528a3275b70747f19d050294ce"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"01a834687c23734bc0a6d931a8d38da398738bdd1cdf08507aeb4037957b196b"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1e05cc41b110dd767467f5c50e71b5ae59bdc9d16fa94d0347af8ab7e9184f00"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"01e0987cd64cbf50e4b2c55df53bed3ae4d442e90d8db6e0cbbbd36065af2a80"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"22276571603c2613571727c1a0113b3f6ba223cd3521570824798d1952454661"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cf8e8497008e446a3a919c6ce187dc4d64874c83d02c3aab20ac731c376a6520"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d80b5e41acfb0e9a038962245060735d800e667f969e79b810d07c48251c1a11"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"87e4d46a0f333679d94e3a1abf751a5595ff4f9abf8a0457619a599f73536abb"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7409999412793f85d059859bfbc86c06114740963a10de9ac3e4342652324ef4"}},{"ruleId":"D34","level":"note","message":{"text":"Further orphaned files (smaller): 36 smaller file(s) also have no living knowledge \u2014 folded into the freshness score and metrics rather than listed individually (36 orphaned of 212 analysed files in total)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce861fd78f6935114d3a342cb90ad25870f984e1042954fcbbe27c0e23be3658"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1032","guid":"5f21e517-68aa-a650-9a25-5771ef024637","name":"OWASP Top Ten \u2014 Security Misconfiguration category","shortDescription":{"text":"OWASP Top Ten \u2014 Security Misconfiguration category"},"helpUri":"https://cwe.mitre.org/data/definitions/1032.html"},{"id":"CWE-1059","guid":"a2381a08-60f6-9554-a8b8-f3018cfaaca5","name":"Insufficient Technical Documentation","shortDescription":{"text":"Insufficient Technical Documentation"},"helpUri":"https://cwe.mitre.org/data/definitions/1059.html"},{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-16","guid":"659db3ea-affc-8453-8add-c1218fbfcb92","name":"Configuration","shortDescription":{"text":"Configuration"},"helpUri":"https://cwe.mitre.org/data/definitions/16.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-326","guid":"7ee78bef-7589-f65f-a9d7-619f3485e844","name":"CWE-326","shortDescription":{"text":"CWE-326"},"helpUri":"https://cwe.mitre.org/data/definitions/326.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"CWE-353","shortDescription":{"text":"CWE-353"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-732","guid":"1da27e8f-b330-7650-ab63-bd61953eae5d","name":"Incorrect Permission Assignment for Critical Resource","shortDescription":{"text":"Incorrect Permission Assignment for Critical Resource"},"helpUri":"https://cwe.mitre.org/data/definitions/732.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":85,"secretScannerRunsExcluded":0}},"redactionTokens":["A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."]}]}