semi implemented and features implemented save checkpoint

This commit is contained in:
master
2026-02-08 18:00:49 +02:00
parent 04360dff63
commit 1bf6bbf395
20895 changed files with 716795 additions and 64 deletions

View File

@@ -0,0 +1,69 @@
# Remediation Checklist - StellaOps.AdvisoryAI.Hosting
## Scope
- Project: src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/StellaOps.AdvisoryAI.Hosting.csproj
- Module: AdvisoryAI
- Audit detail: docs/implplan/audits/csproj-standards/src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/StellaOps.AdvisoryAI.Hosting.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 12
- Files with issues: 8
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| FileLength>100 | 5 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/GuardrailAllowlistLoader.cs | UsingInsideNamespace | Move using directives outside namespace. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/GuardrailPhraseLoader.cs | UsingInsideNamespace | Move using directives outside namespace. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/AdvisoryAiMetrics.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/FileSystemAdvisoryOutputStore.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/FileSystemAdvisoryPlanCache.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/FileSystemAdvisoryTaskQueue.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/AdvisoryAiServiceOptionsValidator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/FileSystemAdvisoryOutputStore.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/FileSystemAdvisoryPlanCache.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/FileSystemAdvisoryTaskQueue.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/ServiceCollectionExtensions.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/StellaOps.AdvisoryAI.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/AdvisoryAiServiceOptions.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/AdvisoryAiServiceOptionsValidator.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/FileSystemAdvisoryOutputStore.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/FileSystemAdvisoryPlanCache.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/FileSystemAdvisoryTaskQueue.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/GuardrailAllowlistLoader.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/GuardrailPhraseLoader.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/IGuidProvider.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Hosting/ServiceCollectionExtensions.cs | Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,50 @@
# Remediation Checklist - StellaOps.AdvisoryAI.Plugin.Unified
## Scope
- Project: src/AdvisoryAI/StellaOps.AdvisoryAI.Plugin.Unified/StellaOps.AdvisoryAI.Plugin.Unified.csproj
- Module: AdvisoryAI
- Audit detail: docs/implplan/audits/csproj-standards/src/AdvisoryAI/StellaOps.AdvisoryAI.Plugin.Unified/StellaOps.AdvisoryAI.Plugin.Unified.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AdvisoryAI/StellaOps.AdvisoryAI.Plugin.Unified
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 2
- Files with issues: 2
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 2 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Plugin.Unified/LlmPluginAdapter.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Plugin.Unified/LlmPluginAdapter.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Plugin.Unified/LlmPluginAdapterFactory.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/StellaOps.AdvisoryAI.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Plugin.Unified/LlmPluginAdapter.cs | Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Plugin.Unified/LlmPluginAdapterFactory.cs | Split types into separate files grouped by responsibility.; Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,50 @@
# Remediation Checklist - StellaOps.AdvisoryAI.Scm.Plugin.Unified
## Scope
- Project: src/AdvisoryAI/StellaOps.AdvisoryAI.Scm.Plugin.Unified/StellaOps.AdvisoryAI.Scm.Plugin.Unified.csproj
- Module: AdvisoryAI
- Audit detail: docs/implplan/audits/csproj-standards/src/AdvisoryAI/StellaOps.AdvisoryAI.Scm.Plugin.Unified/StellaOps.AdvisoryAI.Scm.Plugin.Unified.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AdvisoryAI/StellaOps.AdvisoryAI.Scm.Plugin.Unified
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 2
- Files with issues: 2
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 2 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Scm.Plugin.Unified/ScmPluginAdapter.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Scm.Plugin.Unified/ScmPluginAdapter.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Scm.Plugin.Unified/ScmPluginAdapterFactory.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/StellaOps.AdvisoryAI.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Scm.Plugin.Unified/ScmPluginAdapter.cs | Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Scm.Plugin.Unified/ScmPluginAdapterFactory.cs | Split types into separate files grouped by responsibility.; Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,71 @@
# Remediation Checklist - StellaOps.AdvisoryAI.WebService
## Scope
- Project: src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/StellaOps.AdvisoryAI.WebService.csproj
- Module: AdvisoryAI
- Audit detail: docs/implplan/audits/csproj-standards/src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/StellaOps.AdvisoryAI.WebService.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AdvisoryAI/StellaOps.AdvisoryAI.WebService
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 22
- Files with issues: 15
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| FileLength>100 | 15 | Tier 2 |
| NamespaceNotFileScoped | 1 | Tier 1 |
| PrivateFieldNaming | 1 | Tier 1 |
| ServiceLocator | 2 | Tier 2 |
| UsingNotSorted | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Program.cs | UsingNotSorted | Convert to file-scoped namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Endpoints/AttestationEndpoints.cs | AsyncNaming | Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Endpoints/ChatEndpoints.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Endpoints/EvidencePackEndpoints.cs | AsyncNaming | Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Program.cs | NamespaceNotFileScoped | Convert to file-scoped namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Contracts/ChatContracts.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Contracts/ConsentContracts.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Contracts/ExplainResponse.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Contracts/JustifyContracts.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Contracts/PolicyStudioContracts.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Contracts/RemediationContracts.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Endpoints/AttestationEndpoints.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Endpoints/ChatEndpoints.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Endpoints/EvidencePackEndpoints.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Endpoints/RunEndpoints.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Program.cs | FileLength>100 | Convert to file-scoped namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Services/AuthorizationService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Services/IAiConsentStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Services/IAiJustificationGenerator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Services/RateLimitsService.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): E2E, Integration, Offline, Security, Unit
- Detected test projects: src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/StellaOps.AdvisoryAI.Tests.csproj [Unit, Integration]
- Missing layers: E2E, Offline, Security
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.WebService/Program.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,49 @@
# Remediation Checklist - StellaOps.AdvisoryAI.Worker
## Scope
- Project: src/AdvisoryAI/StellaOps.AdvisoryAI.Worker/StellaOps.AdvisoryAI.Worker.csproj
- Module: AdvisoryAI
- Audit detail: docs/implplan/audits/csproj-standards/src/AdvisoryAI/StellaOps.AdvisoryAI.Worker/StellaOps.AdvisoryAI.Worker.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AdvisoryAI/StellaOps.AdvisoryAI.Worker
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 4
- Files with issues: 1
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| FileLength>100 | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Worker/Services/AdvisoryTaskWorker.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Worker/Services/AdvisoryTaskWorker.cs | AsyncNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI.Worker/Services/AdvisoryTaskWorker.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): E2E, Integration, Offline, Security, Unit
- Detected test projects: src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/StellaOps.AdvisoryAI.Tests.csproj [Unit]
- Missing layers: E2E, Integration, Offline, Security
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,269 @@
# Remediation Checklist - StellaOps.AdvisoryAI
## Scope
- Project: src/AdvisoryAI/StellaOps.AdvisoryAI/StellaOps.AdvisoryAI.csproj
- Module: AdvisoryAI
- Audit detail: docs/implplan/audits/csproj-standards/src/AdvisoryAI/StellaOps.AdvisoryAI/StellaOps.AdvisoryAI.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AdvisoryAI/StellaOps.AdvisoryAI
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 183
- Files with issues: 137
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 22 | Tier 1 |
| BlockingAsync | 3 | Tier 2 |
| ConfigureAwaitMissing | 44 | Tier 1 |
| FileLength>100 | 130 | Tier 2 |
| NamespaceNotStellaOps | 1 | Tier 2 |
| PrivateFieldNaming | 24 | Tier 1 |
| ServiceLocator | 8 | Tier 2 |
| UsingInsideNamespace | 19 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/ApprovalWorkflowAdapter.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/ClaudeInferenceClient.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/OllamaInferenceClient.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/OpenAIInferenceClient.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/SystemPromptLoader.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chunking/CsafDocumentChunker.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chunking/OpenVexDocumentChunker.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chunking/OsvDocumentChunker.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/AdvisoryInferenceClient.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlamaCppRuntime.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/ClaudeLlmProvider.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/GeminiLlmProvider.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/LlamaServerLlmProvider.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/LlmInferenceCache.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/OllamaLlmProvider.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/OpenAiLlmProvider.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/ModelBundle.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/OnnxRuntime.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Providers/SbomContextHttpClient.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/ActionExecutor.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/ApprovalWorkflowAdapter.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/EvidenceBundleAssembler.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/BinaryPatchDataProvider.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/ContextDataProvider.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/FixDataProvider.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/OpsMemoryDataProvider.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/PolicyDataProvider.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/ProvenanceDataProvider.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/ReachabilityDataProvider.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/SbomDataProvider.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/VexDataProvider.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/AttestationIntegration.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/ChatResponseStreamer.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/ClaudeInferenceClient.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/LocalInferenceClient.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/OllamaInferenceClient.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/OpenAIInferenceClient.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/SystemPromptLoader.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Options/AdvisoryChatOptions.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Services/AdvisoryChatService.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Settings/AdvisoryChatToolPolicy.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chunking/CsafDocumentChunker.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chunking/MarkdownDocumentChunker.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Explanation/EvidenceAnchoredExplanationGenerator.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Explanation/NullEvidenceRetrievalService.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Guardrails/AdvisoryGuardrailPipeline.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlamaCppRuntime.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmBenchmark.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/ClaudeLlmProvider.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/GeminiLlmProvider.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/LlamaServerLlmProvider.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/LlmInferenceCache.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/LlmProviderFactory.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/OllamaLlmProvider.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/OpenAiLlmProvider.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/ModelBundle.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/OnnxRuntime.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/ProviderBasedAdvisoryInferenceClient.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/SignedModelBundleManager.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Orchestration/AdvisoryPipelineOptions.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Orchestration/AdvisoryPipelineOrchestrator.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/PolicyStudio/AiPolicyIntentParser.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/PolicyStudio/PolicyBundleCompiler.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Prompting/AdvisoryPromptAssembler.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Providers/ConcelierAdvisoryDocumentProvider.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Providers/ExcititorVexDocumentProvider.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Providers/SbomContextHttpClient.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Queue/IAdvisoryTaskQueue.cs | AsyncNaming | Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/AiRemediationPlanner.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/AzureDevOpsPullRequestGenerator.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/GitHubPullRequestGenerator.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/GitLabMergeRequestGenerator.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/RemediationDeltaService.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/AzureDevOpsScmConnector.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/GitHubScmConnector.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/GitLabScmConnector.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/GiteaScmConnector.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/ScmConnectorBase.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Replay/AIArtifactReplayer.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Retrievers/AdvisoryStructuredRetriever.cs | AsyncNaming | Rename async methods to end with Async. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Retrievers/AdvisoryVectorRetriever.cs | AsyncNaming | Rename async methods to end with Async. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Retrievers/SbomContextRetriever.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Runs/RunService.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Storage/ConversationStore.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Tools/SemanticVersionRange.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Vectorization/DeterministicHashVectorEncoder.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/ActionAuditLedger.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/ActionDefinition.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/ActionExecutor.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/ActionPolicyGate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/ActionRegistry.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/ApprovalWorkflowAdapter.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/IActionAuditLedger.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/IActionExecutor.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/IActionPolicyGate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/IApprovalWorkflowAdapter.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Actions/IdempotencyHandler.cs | BlockingAsync; FileLength>100 | Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Caching/IAdvisoryPlanCache.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/ActionProposalParser.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/DataProviders.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/EvidenceBundleAssembler.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/IEvidenceBundleAssembler.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/BinaryPatchDataProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/ContextDataProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/FixDataProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/OpsMemoryDataProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/PolicyDataProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/ProvenanceDataProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/ReachabilityDataProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/SbomDataProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Assembly/Providers/VexDataProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/AttestationIntegration.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Audit/AdvisoryChatAuditEnvelopeBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/ChatPromptAssembler.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/ChatResponseStreamer.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/ConversationContextBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/ConversationService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/DependencyInjection/AdvisoryChatServiceCollectionExtensions.cs | FileLength>100; NamespaceNotStellaOps; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines.; Update namespace to StellaOps.<Area>. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/EvidencePackChatIntegration.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/GroundingValidator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/ClaudeInferenceClient.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/LocalInferenceClient.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/OllamaInferenceClient.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/OpenAIInferenceClient.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Inference/SystemPromptLoader.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Models/AdvisoryChatModels.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Models/AdvisoryChatResponseModels.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/OpsMemoryIntegration.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/OpsMemoryLinkResolver.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Options/AdvisoryChatOptions.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Routing/AdvisoryChatIntentRouter.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Services/AdvisoryChatQuotaService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Services/AdvisoryChatService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Services/PostgresAdvisoryChatAuditLogger.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Settings/AdvisoryChatSettingsService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Settings/AdvisoryChatSettingsStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chat/Settings/AdvisoryChatToolPolicy.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chunking/CsafDocumentChunker.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chunking/OpenVexDocumentChunker.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Chunking/OsvDocumentChunker.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Context/SbomContextResult.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/DependencyInjection/SbomContextServiceCollectionExtensions.cs | ServiceLocator | Remove service locator usage; use constructor injection. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/DependencyInjection/ToolsetServiceCollectionExtensions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Execution/AdvisoryPipelineExecutor.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Explanation/DefaultExplanationPromptService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Explanation/EvidenceAnchoredExplanationGenerator.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Explanation/ExplanationPromptTemplates.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Explanation/ExplanationResult.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Explanation/IEvidenceRetrievalService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Guardrails/AdvisoryGuardrailPipeline.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/AdvisoryInferenceClient.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/ILocalLlmRuntime.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlamaCppRuntime.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmBenchmark.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/ClaudeLlmProvider.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/GeminiLlmProvider.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/ILlmProvider.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/ILlmProviderPlugin.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/LlamaServerLlmProvider.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/LlmInferenceCache.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/LlmProviderFactory.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/LlmProviderOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/OllamaLlmProvider.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LlmProviders/OpenAiLlmProvider.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LocalInferenceOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/LocalLlmConfig.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/ModelBundle.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/OnnxRuntime.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/ProviderBasedAdvisoryInferenceClient.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Inference/SignedModelBundleManager.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Metrics/AdvisoryPipelineMetrics.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Orchestration/AdvisoryPipelineOptions.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Orchestration/AdvisoryPipelineOrchestrator.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Orchestration/AdvisoryPipelinePlanResponse.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Outputs/AdvisoryOutputStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/PolicyStudio/AiPolicyIntentParser.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/PolicyStudio/IPolicyRuleGenerator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/PolicyStudio/ITestCaseSynthesizer.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/PolicyStudio/LatticeRuleGenerator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/PolicyStudio/NullPolicyIntentParser.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/PolicyStudio/PolicyBundleCompiler.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/PolicyStudio/PolicyIntent.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/PolicyStudio/PropertyBasedTestSynthesizer.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Prompting/AdvisoryPromptAssembler.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Providers/ConcelierAdvisoryDocumentProvider.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Providers/ExcititorVexDocumentProvider.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Providers/ISbomContextClient.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Providers/SbomContextHttpClient.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Queue/IAdvisoryTaskQueue.cs | BlockingAsync | Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/AiRemediationPlanner.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/AzureDevOpsPullRequestGenerator.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/GitHubPullRequestGenerator.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/GitLabMergeRequestGenerator.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/IPullRequestGenerator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/NullRemediationPlanner.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/PrTemplateBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/RemediationDeltaService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/RemediationPlan.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/AzureDevOpsScmConnector.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/GitHubScmConnector.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/GitLabScmConnector.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/GiteaScmConnector.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/IScmConnector.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/ScmConnectorBase.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Remediation/ScmConnector/ScmConnectorCatalog.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Replay/AIArtifactReplayer.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Retrievers/SbomContextRetriever.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Runs/IRunService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Runs/IRunStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Runs/InMemoryRunStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Runs/Models/Run.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Runs/Models/RunArtifact.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Runs/Models/RunEvent.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Runs/RunService.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Storage/ConversationStore.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Tools/DeterministicToolset.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Tools/SemanticVersion.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/StellaOps.AdvisoryAI/Tools/SemanticVersionRange.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/__Tests/__Benchmarks/AdvisoryAI/StellaOps.Bench.AdvisoryAI.csproj [Performance] (no test attributes detected); src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/StellaOps.AdvisoryAI.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,238 @@
# Remediation Checklist - StellaOps.AdvisoryAI.Tests
## Scope
- Project: src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/StellaOps.AdvisoryAI.Tests.csproj
- Module: AdvisoryAI
- Audit detail: docs/implplan/audits/csproj-standards/src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/StellaOps.AdvisoryAI.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 67
- Files with issues: 65
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 53 | Tier 1 |
| BlockingAsync | 3 | Tier 2 |
| ConfigureAwaitMissing | 52 | Tier 1 |
| FileLength>100 | 50 | Tier 2 |
| PrivateFieldNaming | 6 | Tier 1 |
| ServiceLocator | 4 | Tier 2 |
| UsingInsideNamespace | 9 | Tier 0 |
| UsingNotSorted | 58 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Actions/ActionExecutorTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Actions/ActionPolicyGateTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Actions/ActionRegistryTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Actions/IdempotencyHandlerTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailInjectionTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailOptionsBindingTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailPerformanceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailPipelineTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPipelineExecutorTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPipelineOrchestratorTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPipelinePlanResponseTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPlanCacheTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPromptAssemblerTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryStructuredRetrieverTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryTaskQueueTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryVectorRetrieverTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/ActionProposalParserTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Audit/AdvisoryChatAuditEnvelopeBuilderTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/ChatIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/ChatPromptAssemblerTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/ConversationServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/DeterminismTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/GroundingValidatorTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Inference/LocalInferenceClientTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Integration/AdvisoryChatEndpointsIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Integration/AdvisoryChatErrorResponseTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Security/AdvisoryChatSecurityTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Settings/AdvisoryChatSettingsServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Settings/AdvisoryChatToolPolicyTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ConcelierAdvisoryDocumentProviderTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/DeterministicToolsetTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExcititorVexDocumentProviderTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExplanationGeneratorIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExplanationReplayGoldenTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryOutputStoreTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryPersistenceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryPlanCacheTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryTaskQueueTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/GitHubPullRequestGeneratorTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/InMemoryRunStoreTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Integration/EvidenceCardExportIntegrationTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Integration/RunServiceIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/LlmInferenceCacheTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/LlmProviderConfigValidationTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/OfflineInferenceIntegrationTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Plugins/LlmPluginAdapterTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Plugins/ScmPluginAdapterTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/PolicyStudioIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/RemediationIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/RunServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SbomContextHttpClientTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SbomContextRequestTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SbomContextRetrieverTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SemanticVersionTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SignedModelBundleManagerTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/TestUtilities/TestCryptoHash.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ToolsetServiceCollectionExtensionsTests.cs | UsingNotSorted | Remove service locator usage; use constructor injection.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Worker/AdvisoryTaskWorkerTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Actions/ActionExecutorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Actions/ActionPolicyGateTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Actions/IdempotencyHandlerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailInjectionTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailOptionsBindingTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailPerformanceTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailPipelineTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPipelineExecutorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPipelineOrchestratorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPlanCacheTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPromptAssemblerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryStructuredRetrieverTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryTaskQueueTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryVectorRetrieverTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/AdvisoryChatIntentRouterTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/ChatIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/ConversationServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/DataProviders/ReachabilityDataProviderTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/DataProviders/VexDataProviderTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/DeterminismTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/EvidenceBundleAssemblerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/GroundingValidatorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Inference/LocalInferenceClientTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Inference/SystemPromptLoaderTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Integration/AdvisoryChatEndpointsIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Integration/AdvisoryChatErrorResponseTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Security/AdvisoryChatSecurityTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Services/AdvisoryChatQuotaServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Settings/AdvisoryChatSettingsServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ConcelierAdvisoryDocumentProviderTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExcititorVexDocumentProviderTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExplanationGeneratorIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExplanationReplayGoldenTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryOutputStoreTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryPersistenceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryPlanCacheTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryTaskQueueTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/GitHubPullRequestGeneratorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/InMemoryRunStoreTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Integration/EvidenceCardExportIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Integration/RunServiceIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/LlmInferenceCacheTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/OfflineInferenceIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Plugins/LlmPluginAdapterTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Plugins/ScmPluginAdapterTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/PolicyStudioIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/RemediationIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/RunServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SbomContextHttpClientTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SbomContextRetrieverTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SignedModelBundleManagerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/TestUtilities/TestCryptoHash.cs | AsyncNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Worker/AdvisoryTaskWorkerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Actions/ActionExecutorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Actions/ActionPolicyGateTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Actions/ActionRegistryTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Actions/IdempotencyHandlerTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailInjectionTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailOptionsBindingTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailPerformanceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPipelineExecutorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPipelineOrchestratorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPlanCacheTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPromptAssemblerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryStructuredRetrieverTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/ActionProposalParserTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/AdvisoryChatIntentRouterTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Audit/AdvisoryChatAuditEnvelopeBuilderTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/ChatIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/ChatPromptAssemblerTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/ConversationServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/DataProviders/ReachabilityDataProviderTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/DataProviders/VexDataProviderTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/DeterminismTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/EvidenceBundleAssemblerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/GroundingValidatorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Inference/LocalInferenceClientTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Integration/AdvisoryChatEndpointsIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Integration/AdvisoryChatErrorResponseTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Options/AdvisoryChatOptionsTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Security/AdvisoryChatSecurityTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Chat/Settings/AdvisoryChatSettingsServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExcititorVexDocumentProviderTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExplanationGeneratorIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExplanationReplayGoldenTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryOutputStoreTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryPersistenceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryPlanCacheTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/GitHubPullRequestGeneratorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/InMemoryRunStoreTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Integration/EvidenceCardExportIntegrationTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Integration/RunServiceIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/LlmInferenceCacheTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/OfflineInferenceIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Plugins/LlmPluginAdapterTests.cs | BlockingAsync; FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Plugins/ScmPluginAdapterTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/PolicyStudioIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/RemediationIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/RunServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SbomContextHttpClientTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SbomContextRetrieverTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SignedModelBundleManagerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ToolsetServiceCollectionExtensionsTests.cs | ServiceLocator | Remove service locator usage; use constructor injection.; Sort using directives alphabetically. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/Worker/AdvisoryTaskWorkerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailInjectionTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailOptionsBindingTests.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryGuardrailPerformanceTests.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPipelineExecutorTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPipelineOrchestratorTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryPromptAssemblerTests.cs | Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryStructuredRetrieverTests.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/AdvisoryVectorRetrieverTests.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ConcelierAdvisoryDocumentProviderTests.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExcititorVexDocumentProviderTests.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExplanationGeneratorIntegrationTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ExplanationReplayGoldenTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/FileSystemAdvisoryPersistenceTests.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/GitHubPullRequestGeneratorTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/InMemoryRunStoreTests.cs | Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/LlmInferenceCacheTests.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/OfflineInferenceIntegrationTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/PolicyStudioIntegrationTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/RemediationIntegrationTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/RunServiceTests.cs | Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SbomContextHttpClientTests.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SbomContextRetrieverTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/SignedModelBundleManagerTests.cs | Split types into separate files grouped by responsibility. |
| src/AdvisoryAI/__Tests/StellaOps.AdvisoryAI.Tests/ToolsetServiceCollectionExtensionsTests.cs | Split types into separate files grouped by responsibility. |

View File

@@ -0,0 +1,66 @@
# Remediation Checklist - StellaOps.AirGap.Controller
## Scope
- Project: src/AirGap/StellaOps.AirGap.Controller/StellaOps.AirGap.Controller.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/StellaOps.AirGap.Controller/StellaOps.AirGap.Controller.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/StellaOps.AirGap.Controller
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 18
- Files with issues: 8
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| ConfigureAwaitMissing | 4 | Tier 1 |
| FileLength>100 | 6 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Controller/Services/AirGapTelemetry.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Controller/Endpoints/AirGapEndpoints.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Controller/Services/AirGapStartupDiagnosticsHostedService.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Controller/Services/AirGapStateService.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Controller/Services/AirGapTelemetry.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Controller/Services/ReplayVerificationService.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Controller/Auth/HeaderScopeAuthenticationHandler.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Controller/DependencyInjection/AirGapControllerServiceCollectionExtensions.cs | ServiceLocator | Remove service locator usage; use constructor injection. |
| src/AirGap/StellaOps.AirGap.Controller/Endpoints/AirGapEndpoints.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Controller/Endpoints/RequestValidation.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Controller/Services/AirGapStartupDiagnosticsHostedService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Controller/Services/AirGapStateService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Controller/Services/AirGapTelemetry.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/StellaOps.AirGap.Controller.Tests.csproj [Unit, Offline]
- Missing layers: none
- Fix guidance: Maintain deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.
## Remediation Updates
- 2026-02-05: Split AirGapTelemetry, AirGapEndpoints, RequestValidation, AirGapStartupDiagnosticsHostedService, AirGapStateService, and HeaderScopeAuthenticationHandler into <=100-line partials; renamed async handlers and private fields; added ConfigureAwait(false); removed service locator registration; added AirGapStatus and RequestValidation unit coverage; updated controller tests for the new state store constructor.
- 2026-02-05: `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/StellaOps.AirGap.Controller.Tests.csproj` passed (29 tests).

View File

@@ -0,0 +1,108 @@
# Remediation Checklist - StellaOps.AirGap.Importer
## Scope
- Project: src/AirGap/StellaOps.AirGap.Importer/StellaOps.AirGap.Importer.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/StellaOps.AirGap.Importer/StellaOps.AirGap.Importer.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/StellaOps.AirGap.Importer
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 52
- Files with issues: 28
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 11 | Tier 1 |
| BlockingAsync | 1 | Tier 2 |
| ConfigureAwaitMissing | 7 | Tier 1 |
| FileLength>100 | 25 | Tier 2 |
| PrivateFieldNaming | 12 | Tier 1 |
| UsingInsideNamespace | 13 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Importer/Policy/OfflineVerificationPolicyLoader.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Quarantine/FileSystemQuarantineService.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/EvidenceDirectoryDiscovery.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/CycloneDxParser.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/DsseAttestationParser.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/OpenVexParser.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/SpdxParser.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Signing/EvidenceGraphDsseSigner.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/ImportValidator.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/MerkleRootCalculator.cs | UsingInsideNamespace | Move using directives outside namespace. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/ReferrerValidator.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/RekorOfflineReceiptVerifier.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/RuleBundleValidator.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Importer/Policy/OfflineVerificationPolicyLoader.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Quarantine/FileSystemQuarantineService.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/EvidenceDirectoryDiscovery.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/EvidenceGraph.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/EvidenceReconciler.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/JsonNormalizer.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/AttestationCollector.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/CycloneDxParser.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/DsseAttestationParser.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/SbomCollector.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/SbomParserFactory.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/SpdxParser.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Signing/EvidenceGraphDsseSigner.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/RekorOfflineReceiptVerifier.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/RuleBundleValidator.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Importer/Policy/OfflineVerificationPolicy.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Policy/OfflineVerificationPolicyLoader.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Quarantine/FileSystemQuarantineService.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/ArtifactIndex.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/EvidenceGraph.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/EvidenceReconciler.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/JsonNormalizer.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/AttestationCollector.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/CycloneDxParser.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/DsseAttestationParser.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/IAttestationParser.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/ISbomParser.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/OpenVexParser.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/SbomCollector.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/SbomNormalizer.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Parsers/SpdxParser.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/Signing/EvidenceGraphDsseSigner.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Reconciliation/SourcePrecedenceLattice.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Telemetry/OfflineKitMetrics.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/DsseVerifier.cs | BlockingAsync; FileLength>100 | Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/ImportValidator.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/ReferrerValidator.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/RekorOfflineReceiptVerifier.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Validation/RuleBundleValidator.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Importer/Versioning/BundleVersion.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Unit
- Detected test projects: src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/StellaOps.AirGap.Importer.Tests.csproj [Offline]
- Missing layers: Unit
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.
## Remediation Updates
- 2026-02-05: Split OfflineVerificationPolicyLoader into <=100-line partials and renamed the serializer options field to _serializerOptions; renamed EvidenceDirectoryDiscovery evidence roots field for private naming consistency; added OfflineVerificationPolicyLoader unit tests and expanded EvidenceDirectoryDiscovery ordering coverage.
- 2026-02-05: `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/StellaOps.AirGap.Importer.Tests.csproj` passed (154 tests, MTP0001 warning).
- 2026-02-05: Added DSSE parser JsonOptions coverage, JsonNormalizer string value handling, EvidenceGraph/SBOM ASCII canonicalization, RuleBundleValidator path validation tests, and DSSE PAE helper usage; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/StellaOps.AirGap.Importer.Tests.csproj` passed (161 tests, MTP0001 warning).
- 2026-02-06: Removed blocking DSSE verification by making DsseVerifier async and updating validation/attestation call sites; added EvidenceDirectoryDiscovery guard coverage; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/StellaOps.AirGap.Importer.Tests.csproj -v minimal` passed (164 tests, MTP0001 warning).

View File

@@ -0,0 +1,63 @@
# Remediation Checklist - StellaOps.AirGap.Policy.Analyzers.Tests
## Scope
- Project: src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/StellaOps.AirGap.Policy.Analyzers.Tests.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/StellaOps.AirGap.Policy.Analyzers.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 2
- Files with issues: 2
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 2 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
| UsingNotSorted | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/HttpClientUsageAnalyzerTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/PolicyAnalyzerRoslynTests.*.cs (partial) | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/HttpClientUsageAnalyzerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/PolicyAnalyzerRoslynTests.*.cs (partial) | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/HttpClientUsageAnalyzerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/PolicyAnalyzerRoslynTests.*.cs (partial) | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/HttpClientUsageAnalyzerTests.cs | Split types into separate files grouped by responsibility.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/PolicyAnalyzerRoslynTests.*.cs (partial) | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
## Remediation Updates
- 2026-02-04: Split analyzer tests into focused partials with shared helper; moved/sorted using directives; renamed async test methods with Async suffix; expanded coverage for HttpClientHandler construction and test-assembly name exemptions.
- 2026-02-04: ConfigureAwait(false) intentionally omitted in xUnit test methods to avoid xUnit1030; ConfigureAwaitMissing treated as not applicable for tests per sprint decision.
- 2026-02-04: `dotnet test src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/StellaOps.AirGap.Policy.Analyzers.Tests.csproj` passed (19 tests).
- 2026-02-06: Added mixed-case test assembly allow-list coverage plus empty assembly name diagnostic coverage. dotnet test src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/StellaOps.AirGap.Policy.Analyzers.Tests.csproj -v minimal passed (21 tests).

View File

@@ -0,0 +1,50 @@
# Remediation Checklist - StellaOps.AirGap.Policy.Analyzers
## Scope
- Project: src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers/StellaOps.AirGap.Policy.Analyzers.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers/StellaOps.AirGap.Policy.Analyzers.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 1
- Files with issues: 1
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 1 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers/HttpClientUsageAnalyzer.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers/HttpClientUsageAnalyzer.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/StellaOps.AirGap.Policy.Analyzers.Tests.csproj [Offline]
- Missing layers: none
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.
## Remediation Updates
- 2026-02-04: Split HttpClientUsageAnalyzer into focused partials for diagnostics, analysis, and initialization; renamed private fields to _camelCase.
- 2026-02-04: `dotnet test src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/StellaOps.AirGap.Policy.Analyzers.Tests.csproj` passed (19 tests).
- 2026-02-06: Analyzer tests enhanced with mixed-case test assembly allow-list and empty assembly name diagnostic coverage. dotnet test src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Analyzers.Tests/StellaOps.AirGap.Policy.Analyzers.Tests.csproj -v minimal passed (21 tests).

View File

@@ -0,0 +1,54 @@
# Remediation Checklist - StellaOps.AirGap.Policy.Tests
## Scope
- Project: src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests/StellaOps.AirGap.Policy.Tests.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests/StellaOps.AirGap.Policy.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 1
- Files with issues: 1
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 1 | Tier 2 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests/EgressPolicyTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
- No Tier 1 issues detected in file-audit.csv.
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests/EgressPolicyTests.cs | FileLength>100; ServiceLocator | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests/EgressPolicyTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-04: Split EgressPolicy tests into <=100-line partials, removed BuildServiceProvider usage, and applied configuration delegates directly for options binding.
- 2026-02-04: `dotnet test src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests/StellaOps.AirGap.Policy.Tests.csproj` passed (12 tests).
- 2026-02-06: Added invalid-request and port-mismatch coverage; `dotnet test src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests/StellaOps.AirGap.Policy.Tests.csproj -v minimal` passed (14 tests).

View File

@@ -0,0 +1,58 @@
# Remediation Checklist - StellaOps.AirGap.Policy
## Scope
- Project: src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 11
- Files with issues: 4
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
| ServiceLocator | 1 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy/EgressPolicy.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy/AirGapEgressBlockedException.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy/EgressPolicy.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy/EgressPolicyServiceCollectionExtensions.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy/EgressRule.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests/StellaOps.AirGap.Policy.Tests.csproj [Offline]; src/TaskRunner/StellaOps.TaskRunner/StellaOps.TaskRunner.Tests/StellaOps.TaskRunner.Tests.csproj [Unit]; src/Telemetry/StellaOps.Telemetry.Core/StellaOps.Telemetry.Core.Tests/StellaOps.Telemetry.Core.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy/EgressHttpClientFactory.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy/EgressPolicy.cs | Extract helpers to reduce file size and complexity. |
| src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy/EgressPolicyServiceCollectionExtensions.cs | Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
## Remediation Updates
- 2026-02-04: Split EgressPolicy, EgressPolicyServiceCollectionExtensions, EgressRule, and AirGapEgressBlockedException into <=100-line partials; removed service locator registration for IEgressPolicy.
- 2026-02-04: `dotnet test src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests/StellaOps.AirGap.Policy.Tests.csproj` passed (12 tests).
- 2026-02-06: Added invalid-request and port-mismatch coverage in policy tests; `dotnet test src/AirGap/StellaOps.AirGap.Policy/StellaOps.AirGap.Policy.Tests/StellaOps.AirGap.Policy.Tests.csproj -v minimal` passed (14 tests).

View File

@@ -0,0 +1,74 @@
# Remediation Checklist - StellaOps.AirGap.Time
## Scope
- Project: src/AirGap/StellaOps.AirGap.Time/StellaOps.AirGap.Time.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/StellaOps.AirGap.Time/StellaOps.AirGap.Time.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/StellaOps.AirGap.Time
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 30
- Files with issues: 11
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 5 | Tier 1 |
| BlockingAsync | 1 | Tier 2 |
| ConfigureAwaitMissing | 4 | Tier 1 |
| FileLength>100 | 3 | Tier 2 |
| PrivateFieldNaming | 2 | Tier 1 |
| ServiceLocator | 2 | Tier 2 |
| UsingInsideNamespace | 4 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Time/Hooks/StartupValidationExtensions.cs | UsingInsideNamespace | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Replace .Result/.Wait/GetAwaiter().GetResult() with await. |
| src/AirGap/StellaOps.AirGap.Time/Services/Rfc3161Verifier.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Time/Services/RoughtimeVerifier.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Time/Services/TrustRootProvider.cs | UsingInsideNamespace | Move using directives outside namespace. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Time/Controllers/TimeStatusController.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async. |
| src/AirGap/StellaOps.AirGap.Time/Health/TimeAnchorHealthCheck.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async. |
| src/AirGap/StellaOps.AirGap.Time/Services/Rfc3161Verifier.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Time/Services/SealedStartupValidator.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async. |
| src/AirGap/StellaOps.AirGap.Time/Services/TimeAnchorPolicyService.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Time/Services/TimeStatusService.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async. |
| src/AirGap/StellaOps.AirGap.Time/Services/TimeTelemetry.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/StellaOps.AirGap.Time/Hooks/StartupValidationExtensions.cs | BlockingAsync; ServiceLocator | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Replace .Result/.Wait/GetAwaiter().GetResult() with await. |
| src/AirGap/StellaOps.AirGap.Time/Program.cs | ServiceLocator | Remove service locator usage; use constructor injection. |
| src/AirGap/StellaOps.AirGap.Time/Services/Rfc3161Verifier.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Time/Services/RoughtimeVerifier.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AirGap/StellaOps.AirGap.Time/Services/TimeAnchorPolicyService.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/StellaOps.AirGap.Bundle.Tests.csproj [Offline]; src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/StellaOps.AirGap.Time.Tests.csproj [Offline]
- Missing layers: none
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.
## Remediation Updates
- 2026-02-04: Split Rfc3161Verifier and RoughtimeVerifier into focused partials (verification, parsing, revocation) and extracted Ed25519 helper; renamed private fields to _camelCase.
- 2026-02-04: Split TimeAnchorPolicyService into dedicated interface/record/options files and partials for validation, bundle, operation, and drift flows; updated TimeTelemetry field naming.
- 2026-02-04: Replaced StartupValidationExtensions with SealedStartupHostedService to remove service locator + blocking async; Program now relies on hosted service startup validation.
- 2026-02-04: Renamed controller actions to Async and added ConfigureAwait(false) to awaited calls across controller, health check, startup validation, and status service.
- 2026-02-04: `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/StellaOps.AirGap.Time.Tests.csproj` passed (48 tests).
- 2026-02-06: Added content staleness coverage in Time tests; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/StellaOps.AirGap.Time.Tests.csproj -v minimal` passed (50 tests).

View File

@@ -0,0 +1,103 @@
# Remediation Checklist - StellaOps.AirGap.Bundle
## Scope
- Project: src/AirGap/__Libraries/StellaOps.AirGap.Bundle/StellaOps.AirGap.Bundle.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/__Libraries/StellaOps.AirGap.Bundle/StellaOps.AirGap.Bundle.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/__Libraries/StellaOps.AirGap.Bundle
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 37
- Files with issues: 29
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 9 | Tier 1 |
| ConfigureAwaitMissing | 13 | Tier 1 |
| FileLength>100 | 26 | Tier 2 |
| PrivateFieldNaming | 17 | Tier 1 |
| UsingInsideNamespace | 5 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Extractors/PolicySnapshotExtractor.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Serialization/TimestampEntryJsonConverter.cs | UsingInsideNamespace | Move using directives outside namespace. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/CrlFetcher.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/OcspResponseFetcher.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/SnapshotManifestSigner.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Extractors/AdvisorySnapshotExtractor.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Extractors/PolicySnapshotExtractor.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Extractors/VexSnapshotExtractor.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Serialization/BundleManifestSerializer.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/BundleBuilder.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/BundleLoader.cs | AsyncNaming | Rename async methods to end with Async. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/ConcelierAdvisoryImportTarget.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/CrlFetcher.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/ExcititorVexImportTarget.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/KnowledgeSnapshotImporter.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/OcspResponseFetcher.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/PolicyRegistryImportTarget.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/SnapshotBundleReader.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/SnapshotBundleWriter.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/SnapshotManifestSigner.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/TimeAnchorService.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/TrustProfileLoader.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/TrustSnapshot/TrustSnapshotBuilder.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/TrustSnapshot/TrustSnapshotImporter.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Extractors/AdvisorySnapshotExtractor.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Extractors/PolicySnapshotExtractor.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Extractors/VexSnapshotExtractor.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/FunctionMap/FunctionMapBundleIntegration.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Models/BundleFormatV2.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Models/BundleManifest.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Models/KnowledgeSnapshotManifest.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/Abstractions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/BundleBuilder.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/ConcelierAdvisoryImportTarget.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/CrlFetcher.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/ExcititorVexImportTarget.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/KnowledgeSnapshotImporter.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/LocalRbacBundleExtensions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/OcspResponseFetcher.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/PolicyRegistryImportTarget.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/SnapshotBundleReader.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/SnapshotBundleWriter.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/SnapshotManifestSigner.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/TimeAnchorService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/TrustProfileLoader.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Services/TsaChainBundler.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/TrustSnapshot/TrustSnapshotBuilder.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/TrustSnapshot/TrustSnapshotImporter.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/TrustSnapshot/TrustSnapshotManifest.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Bundle/Validation/BundleValidator.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/StellaOps.AirGap.Bundle.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.
## Remediation Updates
- 2026-02-04: FileLength>100 remediation completed; all AirGap.Bundle source files are now <= 100 lines after partial splits (line-count check).
- 2026-02-04: `dotnet test src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/StellaOps.AirGap.Bundle.Tests.csproj` passed (150 tests).
- 2026-02-06: Added TrustProfileLoader path coverage; `dotnet test src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/StellaOps.AirGap.Bundle.Tests.csproj -v minimal` passed (152 tests).

View File

@@ -0,0 +1,58 @@
# Remediation Checklist - StellaOps.AirGap.Persistence
## Scope
- Project: src/AirGap/__Libraries/StellaOps.AirGap.Persistence/StellaOps.AirGap.Persistence.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/__Libraries/StellaOps.AirGap.Persistence/StellaOps.AirGap.Persistence.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/__Libraries/StellaOps.AirGap.Persistence
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| FileLength>100 | 2 | Tier 2 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/StellaOps.AirGap.Persistence/Postgres/Repositories/PostgresAirGapStateStore.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/StellaOps.AirGap.Persistence/Postgres/Repositories/PostgresAirGapStateStore.cs | AsyncNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Persistence/Postgres/Repositories/PostgresBundleVersionStore.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/StellaOps.AirGap.Persistence/Extensions/AirGapPersistenceExtensions.cs | ServiceLocator | Remove service locator usage; use constructor injection. |
| src/AirGap/__Libraries/StellaOps.AirGap.Persistence/Postgres/Repositories/PostgresAirGapStateStore.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Persistence/Postgres/Repositories/PostgresBundleVersionStore.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Integration, Unit
- Detected test projects: src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/StellaOps.AirGap.Persistence.Tests.csproj [Integration, Unit, Offline]
- Missing layers: none
- Fix guidance: Maintain deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.
## Remediation Updates
- 2026-02-05: Removed service locator registration by injecting AirGapStartupMigrationHost and split PostgresAirGapStateStore/PostgresBundleVersionStore into <=100-line partials.
- 2026-02-05: Added unit coverage for AirGapPersistenceExtensions registrations and PostgresBundleVersionStore integration coverage; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/StellaOps.AirGap.Persistence.Tests.csproj` passed (23 tests).
- 2026-02-06: Added history limit zero coverage; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/StellaOps.AirGap.Persistence.Tests.csproj -v minimal` passed (24 tests).

View File

@@ -0,0 +1,75 @@
# Remediation Checklist - StellaOps.AirGap.Sync
## Scope
- Project: src/AirGap/__Libraries/StellaOps.AirGap.Sync/StellaOps.AirGap.Sync.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/__Libraries/StellaOps.AirGap.Sync/StellaOps.AirGap.Sync.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/__Libraries/StellaOps.AirGap.Sync
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 20
- Files with issues: 13
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| FileLength>100 | 13 | Tier 2 |
| PrivateFieldNaming | 4 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/AirGapBundleDsseSigner.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/OfflineHlcManager.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/AirGapBundleExporter.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/AirGapBundleImporter.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/OfflineHlcManager.cs | AsyncNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Stores/FileBasedOfflineJobLogStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Telemetry/AirGapSyncMetrics.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/AirGapSyncServiceCollectionExtensions.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/AirGapBundleDsseSigner.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/AirGapBundleExporter.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/AirGapBundleImporter.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/AirGapSyncService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/ConflictResolver.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/HlcMergeService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Services/OfflineHlcManager.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Stores/FileBasedOfflineJobLogStore.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Telemetry/AirGapSyncMetrics.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Transport/FileBasedJobSyncTransport.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Transport/IJobSyncTransport.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/Transport/RouterJobSyncTransport.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/StellaOps.AirGap.Sync.Tests.csproj [Unit, Offline]
- Missing layers: none
- Fix guidance: Maintain deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AirGap/__Libraries/StellaOps.AirGap.Sync/AirGapSyncServiceCollectionExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |
## Remediation Updates
- 2026-02-04: Split AirGap.Sync services/transport/stores into <=100-line partials, removed service locator usage, injected TimeProvider/HLC clock, enforced path root validation, and standardized newline handling.
- 2026-02-04: Added deterministic unit coverage for AirGap.Sync services and file-based transport; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/StellaOps.AirGap.Sync.Tests.csproj` passed (40 tests, MTP0001 warning).
- 2026-02-06: Added file transport list/receive coverage; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/StellaOps.AirGap.Sync.Tests.csproj -v minimal` passed (42 tests, MTP0001 warning).

View File

@@ -0,0 +1,93 @@
# Remediation Checklist - StellaOps.AirGap.Bundle.Tests
## Scope
- Project: src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/StellaOps.AirGap.Bundle.Tests.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/StellaOps.AirGap.Bundle.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 13
- Files with issues: 11
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 10 | Tier 1 |
| ConfigureAwaitMissing | 10 | Tier 1 |
| FileLength>100 | 11 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 9 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/AirGapCliToolTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/AirGapIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleDeterminismTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleExportImportTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleExportTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleImportTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleManifestTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleTimestampOfflineVerificationTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/FunctionMapBundleIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/AirGapIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleDeterminismTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleExportImportTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleExportModeTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleExportTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleImportTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleInlineArtifactSizeTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleManifestTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleTimestampOfflineVerificationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/FunctionMapBundleIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/AirGapCliToolTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/AirGapIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleDeterminismTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleExportImportTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleExportModeTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleExportTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleImportTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleInlineArtifactSizeTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleManifestTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleTimestampOfflineVerificationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/FunctionMapBundleIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/StellaOps.AirGap.Bundle.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/AirGapCliToolTests.cs | Extract helpers to reduce file size and complexity. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/AirGapIntegrationTests.cs | Extract helpers to reduce file size and complexity. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleDeterminismTests.cs | Extract helpers to reduce file size and complexity. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleExportImportTests.cs | Extract helpers to reduce file size and complexity. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleExportTests.cs | Extract helpers to reduce file size and complexity. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleImportTests.cs | Extract helpers to reduce file size and complexity. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleManifestTests.cs | Extract helpers to reduce file size and complexity. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/BundleTimestampOfflineVerificationTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/FunctionMapBundleIntegrationTests.cs | Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-04: Split oversized test files into <= 100-line partials and extracted helpers; line-count check clean.
- 2026-02-04: `dotnet test src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/StellaOps.AirGap.Bundle.Tests.csproj` passed (150 tests).
- 2026-02-06: Added TrustProfileLoader path coverage; `dotnet test src/AirGap/__Libraries/__Tests/StellaOps.AirGap.Bundle.Tests/StellaOps.AirGap.Bundle.Tests.csproj -v minimal` passed (152 tests).

View File

@@ -0,0 +1,70 @@
# Remediation Checklist - StellaOps.AirGap.Controller.Tests
## Scope
- Project: src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/StellaOps.AirGap.Controller.Tests.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/StellaOps.AirGap.Controller.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 7
- Files with issues: 6
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 5 | Tier 1 |
| ConfigureAwaitMissing | 5 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
| PrivateFieldNaming | 5 | Tier 1 |
| UsingInsideNamespace | 2 | Tier 0 |
| UsingNotSorted | 6 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapEndpointTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapStartupDiagnosticsHostedServiceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapStateServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapTelemetryTests.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/InMemoryAirGapStateStoreTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/ReplayVerificationServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapEndpointTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapStartupDiagnosticsHostedServiceTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapStateServiceTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapTelemetryTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/InMemoryAirGapStateStoreTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/ReplayVerificationServiceTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapEndpointTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapStartupDiagnosticsHostedServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapStateServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/InMemoryAirGapStateStoreTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/AirGapStartupDiagnosticsHostedServiceTests.cs | Split types into separate files grouped by responsibility. |
## Remediation Updates
- 2026-02-06: Added replay verification defaults coverage; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Controller.Tests/StellaOps.AirGap.Controller.Tests.csproj -v minimal` passed (30 tests).

View File

@@ -0,0 +1,99 @@
# Remediation Checklist - StellaOps.AirGap.Importer.Tests
## Scope
- Project: src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/StellaOps.AirGap.Importer.Tests.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/StellaOps.AirGap.Importer.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 28
- Files with issues: 19
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 12 | Tier 1 |
| ConfigureAwaitMissing | 12 | Tier 1 |
| FileLength>100 | 15 | Tier 2 |
| PrivateFieldNaming | 4 | Tier 1 |
| UsingInsideNamespace | 10 | Tier 0 |
| UsingNotSorted | 12 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/AirGapControllerContractTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/DsseVerifierTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/ImportValidatorTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/OfflineKitMetricsTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Quarantine/FileSystemQuarantineServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/DsseAttestationParserTests.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/EvidenceDirectoryDiscoveryTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/EvidenceReconcilerDsseSigningTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/EvidenceReconcilerVexTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/SbomNormalizerVolatileFieldsTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Validation/ImportValidatorIntegrationTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Validation/RekorOfflineReceiptVerifierTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Validation/RuleBundleValidatorTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/ImportValidatorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/InMemoryBundleRepositoriesTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Quarantine/FileSystemQuarantineServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/CycloneDxParserTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/DsseAttestationParserTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/EvidenceReconcilerDsseSigningTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/EvidenceReconcilerVexTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/SourcePrecedenceLatticePropertyTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/SpdxParserTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Validation/ImportValidatorIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Validation/RekorOfflineReceiptVerifierTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Validation/RuleBundleValidatorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Versioning/VersionMonotonicityCheckerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/AirGapControllerContractTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/ImportValidatorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/OfflineKitMetricsTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Quarantine/FileSystemQuarantineServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/CycloneDxParserTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/DsseAttestationParserTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/EvidenceReconcilerVexTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/SbomNormalizerVolatileFieldsTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/SourcePrecedenceLatticePropertyTests.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Reconciliation/SpdxParserTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Validation/ImportValidatorIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Validation/ReferrerValidatorTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Validation/RekorOfflineReceiptVerifierTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Validation/RuleBundleValidatorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/Versioning/VersionMonotonicityCheckerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/AirGapControllerContractTests.cs | Extract helpers to reduce file size and complexity. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/ImportValidatorTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/OfflineKitMetricsTests.cs | Split types into separate files grouped by responsibility. |
## Remediation Updates
- 2026-02-05: Added OfflineVerificationPolicyLoader unit coverage and expanded EvidenceDirectoryDiscovery ordering assertions; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/StellaOps.AirGap.Importer.Tests.csproj` passed (154 tests, MTP0001 warning).
- 2026-02-05: Added DSSE parser options coverage, ASCII canonicalization assertions for EvidenceGraph/SBOM, JsonNormalizer culture coverage, and RuleBundleValidator path validation tests; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/StellaOps.AirGap.Importer.Tests.csproj` passed (161 tests, MTP0001 warning).
- 2026-02-06: Added EvidenceDirectoryDiscovery guard coverage; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Importer.Tests/StellaOps.AirGap.Importer.Tests.csproj -v minimal` passed (164 tests, MTP0001 warning).

View File

@@ -0,0 +1,63 @@
# Remediation Checklist - StellaOps.AirGap.Persistence.Tests
## Scope
- Project: src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/StellaOps.AirGap.Persistence.Tests.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/StellaOps.AirGap.Persistence.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 3 | Tier 2 |
| UsingNotSorted | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/AirGapPostgresFixture.cs | UsingNotSorted | Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/PostgresAirGapStateStoreTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/AirGapPostgresFixture.cs | AsyncNaming | Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/AirGapStorageIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/PostgresAirGapStateStoreTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/AirGapPostgresFixture.cs | FileLength>100 | Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/AirGapStorageIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/PostgresAirGapStateStoreTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/AirGapPostgresFixture.cs | Split types into separate files grouped by responsibility. |
| src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/AirGapStorageIntegrationTests.cs | Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-05: Split AirGapPostgresFixture and AirGap storage tests into <=100-line partials; async test names suffixed with Async and deterministic fixtures applied.
- 2026-02-05: Added bundle version store integration coverage, unit DI registration tests, and Intent/category traits; ConfigureAwaitMissing left as N/A for xUnit guidance; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/StellaOps.AirGap.Persistence.Tests.csproj` passed (23 tests).
- 2026-02-06: Added history limit zero coverage; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Persistence.Tests/StellaOps.AirGap.Persistence.Tests.csproj -v minimal` passed (24 tests).

View File

@@ -0,0 +1,63 @@
# Remediation Checklist - StellaOps.AirGap.Sync.Tests
## Scope
- Project: src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/StellaOps.AirGap.Sync.Tests.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/StellaOps.AirGap.Sync.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 3 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
| UsingNotSorted | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/AirGapBundleDsseSignerTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/AirGapBundleDsseSignerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/HlcMergeServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/AirGapBundleDsseSignerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/ConflictResolverTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/HlcMergeServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/AirGapBundleDsseSignerTests.cs | Extract helpers to reduce file size and complexity. |
| src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/ConflictResolverTests.cs | Extract helpers to reduce file size and complexity. |
| src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/HlcMergeServiceTests.cs | Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-04: Split AirGap.Sync tests into <=100-line partials, added deterministic fixtures, and introduced FileBasedJobSyncTransport coverage.
- 2026-02-04: `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/StellaOps.AirGap.Sync.Tests.csproj` passed (40 tests, MTP0001 warning).
- 2026-02-06: Added file transport list/receive coverage; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Sync.Tests/StellaOps.AirGap.Sync.Tests.csproj -v minimal` passed (42 tests, MTP0001 warning).

View File

@@ -0,0 +1,60 @@
# Remediation Checklist - StellaOps.AirGap.Time.Tests
## Scope
- Project: src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/StellaOps.AirGap.Time.Tests.csproj
- Module: AirGap
- Audit detail: docs/implplan/audits/csproj-standards/src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/StellaOps.AirGap.Time.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/AirGap/__Tests/StellaOps.AirGap.Time.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 14
- Files with issues: 5
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| ConfigureAwaitMissing | 3 | Tier 1 |
| FileLength>100 | 3 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/SealedStartupValidatorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async. |
| src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/TimeAnchorPolicyServiceTests.*.cs (partial) | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/TimeStatusServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/Rfc3161VerifierTests.*.cs (partial) | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/RoughtimeVerifierTests.*.cs (partial) | FileLength>100 | Split file to stay <= 100 lines. |
| src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/TimeAnchorPolicyServiceTests.*.cs (partial) | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/SealedStartupValidatorTests.cs | Split types into separate files grouped by responsibility. |
| src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/TestOptionsMonitor.cs | Split types into separate files grouped by responsibility. |
| src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/TimeAnchorPolicyServiceTests.*.cs (partial) | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-04: Split TimeAnchorPolicyServiceTests, Rfc3161VerifierTests, and RoughtimeVerifierTests into focused partials; added SealedStartupHostedService coverage.
- 2026-02-04: Renamed async test methods to Async suffix; ConfigureAwait(false) intentionally omitted in xUnit tests per sprint decision.
- 2026-02-04: `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/StellaOps.AirGap.Time.Tests.csproj` passed (48 tests).
- 2026-02-06: Added content staleness coverage; `dotnet test src/AirGap/__Tests/StellaOps.AirGap.Time.Tests/StellaOps.AirGap.Time.Tests.csproj -v minimal` passed (50 tests).

View File

@@ -0,0 +1,50 @@
# Remediation Checklist - StellaOps.Aoc.Analyzers
## Scope
- Project: src/Aoc/__Analyzers/StellaOps.Aoc.Analyzers/StellaOps.Aoc.Analyzers.csproj
- Module: Aoc
- Audit detail: docs/implplan/audits/csproj-standards/src/Aoc/__Analyzers/StellaOps.Aoc.Analyzers/StellaOps.Aoc.Analyzers.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Aoc/__Analyzers/StellaOps.Aoc.Analyzers
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 1
- Files with issues: 1
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 1 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Analyzers/StellaOps.Aoc.Analyzers/AocForbiddenFieldAnalyzer.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Analyzers/StellaOps.Aoc.Analyzers/AocForbiddenFieldAnalyzer.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/StellaOps.Aoc.Analyzers.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Aoc/__Analyzers/StellaOps.Aoc.Analyzers/AocForbiddenFieldAnalyzer.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-05: Split AocForbiddenFieldAnalyzer into <=100-line partials, renamed private fields, and added config-driven ingestion coverage; `dotnet test src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/StellaOps.Aoc.Analyzers.Tests.csproj` passed (28 tests, MTP0001 warning).

View File

@@ -0,0 +1,50 @@
# Remediation Checklist - StellaOps.Aoc.AspNetCore
## Scope
- Project: src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore/StellaOps.Aoc.AspNetCore.csproj
- Module: Aoc
- Audit detail: docs/implplan/audits/csproj-standards/src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore/StellaOps.Aoc.AspNetCore.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 1
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| FileLength>100 | 1 | Tier 2 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore/Routing/AocGuardEndpointFilter.cs | UsingInsideNamespace | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore/Routing/AocGuardEndpointFilter.cs | AsyncNaming | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Libraries/StellaOps.Aoc.AspNetCore/Routing/AocGuardEndpointFilter.cs | FileLength>100; ServiceLocator | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/StellaOps.Aoc.AspNetCore.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,54 @@
# Remediation Checklist - StellaOps.Aoc
## Scope
- Project: src/Aoc/__Libraries/StellaOps.Aoc/StellaOps.Aoc.csproj
- Module: Aoc
- Audit detail: docs/implplan/audits/csproj-standards/src/Aoc/__Libraries/StellaOps.Aoc/StellaOps.Aoc.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Aoc/__Libraries/StellaOps.Aoc
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 10
- Files with issues: 4
| Issue | Count | Tier |
| --- | --- | --- |
| BlockingAsync | 1 | Tier 2 |
| FileLength>100 | 1 | Tier 2 |
| PrivateFieldNaming | 2 | Tier 1 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Libraries/StellaOps.Aoc/AocForbiddenKeys.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Aoc/__Libraries/StellaOps.Aoc/AocGuardOptions.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Libraries/StellaOps.Aoc/AocError.cs | BlockingAsync | Replace .Result/.Wait/GetAwaiter().GetResult() with await. |
| src/Aoc/__Libraries/StellaOps.Aoc/AocWriteGuard.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Aoc/__Tests/StellaOps.Aoc.Tests/StellaOps.Aoc.Tests.csproj [Unit]; src/Concelier/__Tests/StellaOps.Concelier.Core.Tests/StellaOps.Concelier.Core.Tests.csproj [Unit]; src/Excititor/__Tests/StellaOps.Excititor.Core.Tests/StellaOps.Excititor.Core.Tests.csproj [Unit]; src/Excititor/__Tests/StellaOps.Excititor.WebService.Tests/StellaOps.Excititor.WebService.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Aoc/__Libraries/StellaOps.Aoc/AocForbiddenKeys.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Aoc/__Libraries/StellaOps.Aoc/AocGuardExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Aoc/__Libraries/StellaOps.Aoc/AocViolationCode.cs | Split types into separate files grouped by responsibility.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Aoc/__Libraries/StellaOps.Aoc/AocWriteGuard.cs | Split types into separate files grouped by responsibility. |
| src/Aoc/__Libraries/StellaOps.Aoc/ServiceCollectionExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,56 @@
# Remediation Checklist - StellaOps.Aoc.Analyzers.Tests
## Scope
- Project: src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/StellaOps.Aoc.Analyzers.Tests.csproj
- Module: Aoc
- Audit detail: docs/implplan/audits/csproj-standards/src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/StellaOps.Aoc.Analyzers.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 1
- Files with issues: 1
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/AocForbiddenFieldAnalyzerTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/AocForbiddenFieldAnalyzerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/AocForbiddenFieldAnalyzerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/AocForbiddenFieldAnalyzerTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-05: Split analyzer tests into <=100-line partials, suffixed async test names, removed in-string using directives, added Intent traits and config-driven ingestion coverage. ConfigureAwaitMissing left as N/A for xUnit guidance. `dotnet test src/Aoc/__Tests/StellaOps.Aoc.Analyzers.Tests/StellaOps.Aoc.Analyzers.Tests.csproj` passed (28 tests, MTP0001 warning).

View File

@@ -0,0 +1,62 @@
# Remediation Checklist - StellaOps.Aoc.AspNetCore.Tests
## Scope
- Project: src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/StellaOps.Aoc.AspNetCore.Tests.csproj
- Module: Aoc
- Audit detail: docs/implplan/audits/csproj-standards/src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/StellaOps.Aoc.AspNetCore.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 1 | Tier 2 |
| ServiceLocator | 2 | Tier 2 |
| UsingInsideNamespace | 3 | Tier 0 |
| UsingNotSorted | 3 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/AocGuardEndpointFilterExtensionsTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically. |
| src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/AocGuardEndpointFilterTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/AocHttpResultsTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/AocGuardEndpointFilterTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/AocHttpResultsTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/AocGuardEndpointFilterTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/AocHttpResultsTests.cs | ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/AocGuardEndpointFilterExtensionsTests.cs | Split types into separate files grouped by responsibility. |
| src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/AocGuardEndpointFilterTests.cs | Split types into separate files grouped by responsibility. |
## Remediation Updates
- 2026-02-05: Split guard endpoint filter tests into <=100-line partials, suffixed async test names, added payload selector/guard options/status mapping coverage and Intent traits, and removed service locator usage from AocHttpResultsTests by asserting ProblemHttpResult details directly. ConfigureAwaitMissing left as N/A for xUnit guidance. `dotnet test src/Aoc/__Tests/StellaOps.Aoc.AspNetCore.Tests/StellaOps.Aoc.AspNetCore.Tests.csproj` passed (12 tests).

View File

@@ -0,0 +1,56 @@
# Remediation Checklist - StellaOps.Aoc.Tests
## Scope
- Project: src/Aoc/__Tests/StellaOps.Aoc.Tests/StellaOps.Aoc.Tests.csproj
- Module: Aoc
- Audit detail: docs/implplan/audits/csproj-standards/src/Aoc/__Tests/StellaOps.Aoc.Tests/StellaOps.Aoc.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Aoc/__Tests/StellaOps.Aoc.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 2
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 1 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.Tests/AocErrorTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Aoc/__Tests/StellaOps.Aoc.Tests/AocWriteGuardTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.Tests/AocWriteGuardTests.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.Tests/AocWriteGuardTests.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Aoc/__Tests/StellaOps.Aoc.Tests/AocWriteGuardTests.cs | Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-05: Split guard tests into <=100-line partials with helper validation, renamed private field to _guard, sorted usings, added Intent traits, and added optional signature metadata coverage. `dotnet test src/Aoc/__Tests/StellaOps.Aoc.Tests/StellaOps.Aoc.Tests.csproj` passed (12 tests).

View File

@@ -0,0 +1,61 @@
# Remediation Checklist - StellaOps.Attestation.Tests
## Scope
- Project: src/Attestor/StellaOps.Attestation.Tests/StellaOps.Attestation.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestation.Tests/StellaOps.Attestation.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestation.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 3 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestation.Tests/DsseEnvelopeExtensionsTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestation.Tests/DsseHelperTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestation.Tests/DsseVerifierTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestation.Tests/DsseHelperTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestation.Tests/DsseVerifierTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestation.Tests/DsseVerifierTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/StellaOps.Attestation.Tests/DsseHelperTests.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/StellaOps.Attestation.Tests/DsseVerifierTests.cs | Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-05: Split DSSE helper/verifier tests into <=100-line partials with helper extraction, suffixed async test names, added payload base64 error coverage and Intent traits, and sorted usings. ConfigureAwaitMissing left as N/A for xUnit guidance. `dotnet test src/Attestor/StellaOps.Attestation.Tests/StellaOps.Attestation.Tests.csproj` passed (18 tests).
- 2026-02-05: Added signature issue and payload-type default verifier tests to support Attestation remediation; `dotnet test src/Attestor/StellaOps.Attestation.Tests/StellaOps.Attestation.Tests.csproj` passed (21 tests).

View File

@@ -0,0 +1,61 @@
# Remediation Checklist - StellaOps.Attestation
## Scope
- Project: src/Attestor/StellaOps.Attestation/StellaOps.Attestation.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestation/StellaOps.Attestation.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestation
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| FileLength>100 | 2 | Tier 2 |
| PrivateFieldNaming | 2 | Tier 1 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestation/DsseVerifier.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestation/DsseHelper.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Attestor/StellaOps.Attestation/DsseVerifier.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestation/DsseVerifier.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestation/IDsseVerifier.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/StellaOps.Attestation.Tests/StellaOps.Attestation.Tests.csproj [Unit]; src/Scanner/__Tests/StellaOps.Scanner.Worker.Tests/StellaOps.Scanner.Worker.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/StellaOps.Attestation/DsseEnvelopeExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/StellaOps.Attestation/DsseHelper.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/StellaOps.Attestation/DsseVerifier.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestation/IDsseVerifier.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/StellaOps.Attestation/Models.cs | Split types into separate files grouped by responsibility. |
## Remediation Updates
- 2026-02-05: Split DsseVerifier and IDsseVerifier/DsseVerificationResult into <=100-line files with helper extraction, moved DSSE DTOs/signature verification helpers, renamed _serializerOptions, and added verifier tests for missing payload type plus signature empty/invalid-base64 issues; `dotnet test src/Attestor/StellaOps.Attestation.Tests/StellaOps.Attestation.Tests.csproj` passed (21 tests).

View File

@@ -0,0 +1,68 @@
# Remediation Checklist - StellaOps.Attestor.Envelope
## Scope
- Project: src/Attestor/StellaOps.Attestor.Envelope/StellaOps.Attestor.Envelope.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestor.Envelope/StellaOps.Attestor.Envelope.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestor.Envelope
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 15
- Files with issues: 9
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 4 | Tier 2 |
| PrivateFieldNaming | 4 | Tier 1 |
| UsingInsideNamespace | 5 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.Envelope/DsseEnvelopeSerializer.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.Envelope/EnvelopeKeyIdCalculator.cs | UsingInsideNamespace | Move using directives outside namespace. |
| src/Attestor/StellaOps.Attestor.Envelope/EnvelopeSignatureService.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests/DsseEnvelopeSerializerTests.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests/EnvelopeSignatureServiceTests.cs | UsingInsideNamespace | Move using directives outside namespace. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.Envelope/DssePreAuthenticationEncoding.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Attestor/StellaOps.Attestor.Envelope/EnvelopeKey.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.Envelope/EnvelopeSignature.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Attestor/StellaOps.Attestor.Envelope/EnvelopeSignatureResult.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.Envelope/DsseEnvelopeSerializer.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.Envelope/EnvelopeKey.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.Envelope/EnvelopeSignatureService.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests/DsseEnvelopeSerializerTests.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/__Tests/Integration/StellaOps.Integration.E2E/StellaOps.Integration.E2E.csproj [E2E, Integration]; src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/StellaOps.Attestor.GraphRoot.Tests.csproj [Unit]; src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/StellaOps.Attestor.Oci.Tests.csproj [Unit]; src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/StellaOps.Attestor.ProofChain.Tests.csproj [Unit]; src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests/StellaOps.Attestor.Envelope.Tests.csproj [Unit]; src/Cli/__Tests/StellaOps.Cli.Tests/StellaOps.Cli.Tests.csproj [CLI]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/StellaOps.Attestor.Envelope/DsseEnvelopeSerializer.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/StellaOps.Attestor.Envelope/DssePreAuthenticationEncoding.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/StellaOps.Attestor.Envelope/EnvelopeKey.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor.Envelope/EnvelopeKeyIdCalculator.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/StellaOps.Attestor.Envelope/EnvelopeSignatureResult.cs | Split types into separate files grouped by responsibility. |
## Remediation Updates
- 2026-02-05: Split DsseEnvelopeSerializer, EnvelopeKey, and EnvelopeSignatureService into <=100-line partials, renamed private fields in DSSE helpers, and expanded envelope test coverage for payload previews, signature ordering, key derivation, and mismatch paths; `dotnet test src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests/StellaOps.Attestor.Envelope.Tests.csproj` passed (18 tests, MTP0001 warning).

View File

@@ -0,0 +1,49 @@
# Remediation Checklist - StellaOps.Attestor.Envelope.Tests
## Scope
- Project: src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests/StellaOps.Attestor.Envelope.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests/StellaOps.Attestor.Envelope.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 2
- Files with issues: 2
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 1 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests/DsseEnvelopeSerializerTests.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests/EnvelopeSignatureServiceTests.cs | UsingInsideNamespace | Move using directives outside namespace. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
- No Tier 1 issues detected in file-audit.csv.
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests/DsseEnvelopeSerializerTests.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.
## Remediation Updates
- 2026-02-05: Split serializer and signature service tests into <=100-line partials, added payload preview/signature ordering and key mismatch/derivation coverage; `dotnet test src/Attestor/StellaOps.Attestor.Envelope/__Tests/StellaOps.Attestor.Envelope.Tests/StellaOps.Attestor.Envelope.Tests.csproj` passed (18 tests, MTP0001 warning).

View File

@@ -0,0 +1,62 @@
# Remediation Checklist - StellaOps.Attestor.TileProxy
## Scope
- Project: src/Attestor/StellaOps.Attestor.TileProxy/StellaOps.Attestor.TileProxy.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestor.TileProxy/StellaOps.Attestor.TileProxy.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestor.TileProxy
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 6
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 4 | Tier 1 |
| ConfigureAwaitMissing | 4 | Tier 1 |
| FileLength>100 | 6 | Tier 2 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.TileProxy/Services/TileProxyService.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.TileProxy/Endpoints/TileEndpoints.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.TileProxy/Jobs/TileSyncJob.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.TileProxy/Services/ContentAddressedTileStore.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.TileProxy/Services/TileProxyService.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.TileProxy/Endpoints/TileEndpoints.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.TileProxy/Jobs/TileSyncJob.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.TileProxy/Program.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.TileProxy/Services/ContentAddressedTileStore.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.TileProxy/Services/TileProxyService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.TileProxy/TileProxyOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Unit
- Detected test projects: none
- Missing layers: Unit
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/StellaOps.Attestor.TileProxy/Program.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/StellaOps.Attestor.TileProxy/TileProxyOptions.cs | Split types into separate files grouped by responsibility. |

View File

@@ -0,0 +1,51 @@
# Remediation Checklist - StellaOps.Attestor.Types.Generator
## Scope
- Project: src/Attestor/StellaOps.Attestor.Types/Tools/StellaOps.Attestor.Types.Generator/StellaOps.Attestor.Types.Generator.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestor.Types/Tools/StellaOps.Attestor.Types.Generator/StellaOps.Attestor.Types.Generator.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestor.Types/Tools/StellaOps.Attestor.Types.Generator
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 1
- Files with issues: 1
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 1 | Tier 2 |
| UsingNotSorted | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.Types/Tools/StellaOps.Attestor.Types.Generator/Program.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
- No Tier 1 issues detected in file-audit.csv.
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.Types/Tools/StellaOps.Attestor.Types.Generator/Program.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Unit
- Detected test projects: none
- Missing layers: Unit
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/StellaOps.Attestor.Types/Tools/StellaOps.Attestor.Types.Generator/Program.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
## Remediation Updates
- 2026-02-05: Split Program.cs into focused generator/emitter/registry/schema files to stay <= 100 lines; sorted usings.
- 2026-02-05: Generator outputs validated via Attestor Types tests (`dotnet test src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/StellaOps.Attestor.Types.Tests.csproj` passed 84 tests, MTP0001 warning: VSTest properties ignored); no dedicated generator test project.

View File

@@ -0,0 +1,60 @@
# Remediation Checklist - StellaOps.Attestor.Verify
## Scope
- Project: src/Attestor/StellaOps.Attestor.Verify/StellaOps.Attestor.Verify.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestor.Verify/StellaOps.Attestor.Verify.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestor.Verify
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 2
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 2 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
| UsingNotSorted | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.Verify/AttestorVerificationEngine.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.Verify/Providers/DistributedVerificationProvider.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.Verify/Providers/DistributedVerificationProvider.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor.Verify/AttestorVerificationEngine.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor.Verify/Providers/DistributedVerificationProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Tests/StellaOps.Attestor.Verify.Tests/StellaOps.Attestor.Verify.Tests.csproj [Unit]; src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/StellaOps.Attestor.Verify/AttestorVerificationEngine.cs | Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-05: Split AttestorVerificationEngine into <=100-line partials (signature evaluation, keyless helpers, transparency, policy/status, decoding, hashing) and sorted usings.
- 2026-02-05: Split DistributedVerificationProvider into partials, moved hashing/options/models into dedicated files, and added ConfigureAwait(false) to async calls under the experimental guard.
- 2026-02-05: `dotnet test src/Attestor/__Tests/StellaOps.Attestor.Verify.Tests/StellaOps.Attestor.Verify.Tests.csproj` passed (8 tests, MTP0001 warning: VSTest properties ignored).

View File

@@ -0,0 +1,120 @@
# Remediation Checklist - StellaOps.Attestor.Core.Tests
## Scope
- Project: src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 29
- Files with issues: 27
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 18 | Tier 1 |
| BlockingAsync | 2 | Tier 2 |
| ConfigureAwaitMissing | 18 | Tier 1 |
| FileLength>100 | 22 | Tier 2 |
| PrivateFieldNaming | 2 | Tier 1 |
| UsingInsideNamespace | 9 | Tier 0 |
| UsingNotSorted | 23 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/AttestationChainBuilderTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/AttestationChainValidatorTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/ChainResolverDirectionalTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Delta/DeltaAttestationServiceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Fixtures/Rekor/RekorOfflineReceiptFixtures.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/InTotoGoldenTests.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/InTotoLinkTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/LayoutVerifierTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/LinkRecorderTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Layers/LayerAttestationServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/PoE/PoEArtifactGeneratorTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/CheckpointDivergenceByzantineTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/CheckpointDivergenceDetectorTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/RekorReceiptTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/RekorSyncIntegrationTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/RekorSyncServiceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/RekorOfflineReceiptVerifierTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Signing/DssePreAuthenticationEncodingTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Signing/VerificationReportSignerTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Submission/AttestorSubmissionValidatorTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Transparency/TransparencyStatusProviderTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Validation/PredicateSchemaValidatorTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Verification/CheckpointSignatureVerifierTests.cs | UsingNotSorted | Sort using directives alphabetically. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/AttestationChainBuilderTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/AttestationLinkResolverTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/ChainResolverDirectionalTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/InMemoryAttestationLinkStoreTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Delta/DeltaAttestationServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Fixtures/Rekor/RekorOfflineReceiptFixtures.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/ArtifactDigestsTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/InTotoGoldenTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/LayoutVerifierTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/LinkRecorderTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Layers/LayerAttestationServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/PoE/PoEArtifactGeneratorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/CheckpointDivergenceByzantineTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/CheckpointDivergenceDetectorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/RekorSyncIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/RekorSyncServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/RekorOfflineReceiptVerifierTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Signing/VerificationReportSignerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Submission/AttestorSubmissionValidatorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Transparency/TransparencyStatusProviderTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/AttestationChainBuilderTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/AttestationChainValidatorTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/AttestationLinkResolverTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/ChainResolverDirectionalTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Chain/InMemoryAttestationLinkStoreTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/ArtifactDigestsTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/InTotoGoldenTests.cs | FileLength>100 | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/InTotoLinkTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/LayoutVerifierTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/LinkBuilderTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/InToto/LinkRecorderTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Layers/LayerAttestationServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/PoE/PoEArtifactGeneratorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/CheckpointDivergenceByzantineTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/CheckpointDivergenceDetectorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/RekorReceiptTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/RekorSyncIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Rekor/RekorSyncServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/RekorOfflineReceiptVerifierTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Signing/VerificationReportSignerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Transparency/TransparencyStatusProviderTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/Validation/PredicateSchemaValidatorTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/RekorOfflineReceiptVerifierTests.cs | Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-05: Split Attestor.Core.Tests files into <=100-line partials across chain, delta, in-toto, layer, rekor, submission, transparency, and validation suites; fixed async naming and blocking async; added deterministic helpers and extra coverage (transparency log preference, digest ordering, receipt entry URL variants, sync metrics, checkpoint divergence); corrected in-toto fixture digest expectations; ConfigureAwaitMissing left as N/A for xUnit guidance. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.csproj` passed (235 tests, MTP0001 warning).

View File

@@ -0,0 +1,155 @@
# Remediation Checklist - StellaOps.Attestor.Core
## Scope
- Project: src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/StellaOps.Attestor.Core.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/StellaOps.Attestor.Core.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 116
- Files with issues: 67
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 9 | Tier 1 |
| ConfigureAwaitMissing | 14 | Tier 1 |
| FileLength>100 | 63 | Tier 2 |
| PrivateFieldNaming | 8 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 7 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Delta/DeltaAttestationService.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/ArtifactDigests.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Serialization/CanonicalJsonSerializer.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Signing/DsseSigningService.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Validation/PredicateSchemaValidator.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/CheckpointSignatureVerifier.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/RekorVerificationService.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Chain/InMemoryAttestationLinkStore.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Delta/DeltaAttestationService.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/IInTotoLinkEmitter.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/ILinkRecorder.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/PoEArtifactGenerator.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/CheckpointDivergenceAlertPublisher.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/CheckpointDivergenceDetector.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/FileSystemRekorTileCache.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/RekorSyncBackgroundService.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Resilience/CircuitBreaker.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Serialization/CanonicalJsonSerializer.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Signing/DssePreAuthenticationEncoding.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Signing/DsseSigningService.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Submission/AttestorSubmissionValidator.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Transparency/TransparencyStatusProvider.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/RekorOfflineReceiptVerifier.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/RekorVerificationHealthCheck.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/RekorVerificationJob.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/RekorVerificationMetrics.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/RekorVerificationService.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Chain/AttestationChain.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Chain/AttestationChainBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Chain/AttestationChainValidator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Chain/AttestationLink.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Chain/AttestationLinkResolver.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Chain/DependencyInjectionRoutine.cs | ServiceLocator | Remove service locator usage; use constructor injection. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Chain/IAttestationLinkResolver.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Chain/InMemoryAttestationLinkStore.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Chain/InMemoryAttestationNodeProvider.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Chain/InTotoStatementMaterials.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Configuration/RekorVerificationOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Delta/DeltaAttestationService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Delta/IDeltaAttestationService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/IProofEmitter.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/ArtifactDigests.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/IInTotoLinkSigningService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/InTotoLink.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/InTotoLinkPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/Layout/ILayoutVerifier.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/Layout/InTotoLayout.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/Layout/LayoutVerifier.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/LinkBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/LinkRecorder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/InToto/MaterialSpec.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Layers/ILayerAttestationService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Layers/LayerAttestation.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Layers/LayerAttestationService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Observability/AttestorMetrics.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Options/AttestorOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Options/RekorVerificationOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/PoEArtifactGenerator.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/PoEModels.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Queue/IRekorSubmissionQueue.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/CheckpointDivergenceAlertPublisher.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/CheckpointDivergenceDetector.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/FileSystemRekorTileCache.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/ICheckpointDivergenceDetector.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/IRekorCheckpointStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/IRekorTileCache.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/IRekorTileClient.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/RekorEntryEvent.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/RekorReceipt.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Rekor/RekorSyncBackgroundService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Resilience/CircuitBreaker.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Serialization/CanonicalJsonSerializer.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Signing/DsseSigningService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Signing/FileKeyProvider.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Storage/AttestorEntry.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Submission/AttestorSubmissionResult.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Submission/AttestorSubmissionValidator.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Transparency/TransparencyStatus.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Transparency/TransparencyStatusProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Validation/PredicateSchemaValidator.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/CheckpointSignatureVerifier.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/IRekorVerificationService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/InstrumentedTimeSkewValidator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/MerkleProofVerifier.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/RekorOfflineReceiptVerifier.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/RekorVerificationHealthCheck.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/RekorVerificationJob.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/RekorVerificationMetrics.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/RekorVerificationService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/TimeSkewValidator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/Verification/VerificationReport.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/StellaOps.Attestor.GraphRoot.Tests.csproj [Unit]; src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/StellaOps.Attestor.Conformance.Tests.csproj [Unit]; src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/StellaOps.Attestor.Infrastructure.Tests.csproj [Unit]; src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.csproj [Unit]; src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj [Unit]; src/Cli/__Tests/StellaOps.Cli.Tests/StellaOps.Cli.Tests.csproj [CLI]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/IProofEmitter.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/PathWitnessPredicateTypes.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/PoEArtifactGenerator.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core/PoEModels.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-05: Split delta attestation service into <=100-line partials, moved in-toto statement/options to dedicated files, added ConfigureAwait(false) on async paths, and split ArtifactDigests into partials; added delta attestation tests for key selection and time provider. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.csproj` passed (238 tests, MTP0001 warning).
- 2026-02-05: Split CanonicalJsonSerializer converters into <=100-line files, renamed private fields to _camelCase, and added SortedDictionary deserialization coverage. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.csproj` passed (239 tests, MTP0001 warning).
- 2026-02-05: Split PredicateSchemaValidator into <=100-line files (results/interface/loader/helpers) and added tests for unprefixed predicate types plus error list coverage. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.csproj` passed (240 tests, MTP0001 warning).
- 2026-02-05: Split DsseSigningService and key models into <=100-line files, added ConfigureAwait(false) on key provider awaits, and added DSSE sign/verify round-trip tests. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.csproj` passed (242 tests, MTP0001 warning).
- 2026-02-05: Split CheckpointSignatureVerifier into <=100-line partials (signed note parsing/helpers, Ed25519 helpers) and added signed note parse failure coverage. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.csproj` passed (245 tests, MTP0001 warning).
- 2026-02-05: Split RekorVerificationService into <=100-line partials, added ConfigureAwait(false) for async calls, and added offline invalid proof/time skew plus batch count coverage. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.csproj` passed (248 tests, MTP0001 warning).
- 2026-02-05: Split RekorVerificationHealthCheck/status provider types into <=100-line files, added ConfigureAwait(false) for status fetch, and added health check plus in-memory status provider tests. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.csproj` passed (257 tests, MTP0001 warning).
- 2026-02-05: Split RekorVerificationJob into <=100-line partials with ConfigureAwait(false), added repository/checkpoint helper types, and added verification job run tests for no entries, sampling skip, and root consistency paths. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Core.Tests/StellaOps.Attestor.Core.Tests.csproj` passed (260 tests, MTP0001 warning).

View File

@@ -0,0 +1,112 @@
# Remediation Checklist - StellaOps.Attestor.Infrastructure
## Scope
- Project: src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/StellaOps.Attestor.Infrastructure.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/StellaOps.Attestor.Infrastructure.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 33
- Files with issues: 25
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 16 | Tier 1 |
| BlockingAsync | 3 | Tier 2 |
| ConfigureAwaitMissing | 5 | Tier 1 |
| FileLength>100 | 21 | Tier 2 |
| PrivateFieldNaming | 4 | Tier 1 |
| ServiceLocator | 2 | Tier 2 |
| UsingInsideNamespace | 7 | Tier 0 |
| UsingNotSorted | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Queue/PostgresRekorSubmissionQueue.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Rekor/HttpRekorClient.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Rekor/HttpRekorTileClient.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Signing/AttestorSigningKeyRegistry.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Storage/S3AttestorArchiveStore.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Transparency/HttpTransparencyWitnessClient.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Verification/AttestorVerificationService.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Workers/RekorRetryWorker.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Bulk/BulkVerificationWorker.cs | AsyncNaming | Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Offline/AttestorBundleService.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Queue/PostgresRekorSubmissionQueue.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Rekor/HttpRekorClient.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Rekor/ResilientRekorClient.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Rekor/ServiceMapAwareRekorBackendResolver.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Storage/CachingAttestorDedupeStore.cs | AsyncNaming | Rename async methods to end with Async. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Storage/RedisAttestorDedupeStore.cs | AsyncNaming | Rename async methods to end with Async. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Storage/S3AttestorArchiveStore.cs | AsyncNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Submission/AttestorSubmissionService.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Submission/DefaultDsseCanonicalizer.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Transparency/HttpTransparencyWitnessClient.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Verification/AttestorVerificationService.cs | AsyncNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Verification/CachedAttestorVerificationService.cs | AsyncNaming | Rename async methods to end with Async. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Verification/MessagingAttestorVerificationCache.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Watchlist/PostgresWatchlistRepository.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Workers/RekorRetryWorker.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Bulk/BulkVerificationWorker.cs | BlockingAsync; FileLength>100 | Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/InToto/InTotoLinkSigningService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Offline/AttestorBundleService.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Queue/PostgresRekorSubmissionQueue.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Rekor/HttpRekorClient.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Rekor/HttpRekorTileClient.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Rekor/ResilientRekorClient.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Rekor/ServiceMapAwareRekorBackendResolver.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Rekor/StubRekorClient.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/ServiceCollectionExtensions.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Signing/AttestorSigningKeyRegistry.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Signing/AttestorSigningService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Storage/InMemoryAttestorEntryRepository.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Storage/S3AttestorArchiveStore.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Submission/AttestorSubmissionService.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Transparency/HttpTransparencyWitnessClient.cs | BlockingAsync; FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Verification/AttestorVerificationService.cs | BlockingAsync; FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Verification/InMemoryAttestorVerificationCache.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Verification/MessagingAttestorVerificationCache.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Watchlist/PostgresWatchlistRepository.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/Workers/RekorRetryWorker.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Integration, Unit
- Detected test projects: src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/StellaOps.Attestor.Conformance.Tests.csproj [Unit]; src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/StellaOps.Attestor.Infrastructure.Tests.csproj [Unit]; src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/StellaOps.Attestor.Watchlist.Tests.csproj [Unit]; src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj [Unit]
- Missing layers: Integration
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Infrastructure/ServiceCollectionExtensions.cs | Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
## Remediation Updates
- 2026-02-05: Split HttpRekorTileClient into <=100-line partials (checkpoints, tiles, entries, inclusion proof, proof path, hashing, parsing, and path helpers) and added path formatting tests. `dotnet test src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/StellaOps.Attestor.Infrastructure.Tests.csproj` passed (51 tests, MTP0001 warning).
- 2026-02-05: Split HttpRekorClient into <=100-line partials (submission, proof, inclusion validation, parsing, hashing, and URI helpers) and added submission/proof tests. `dotnet test src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/StellaOps.Attestor.Infrastructure.Tests.csproj` passed (53 tests, MTP0001 warning).
- 2026-02-06: Split ResilientRekorClient into <=100-line partials (submission, proof, inclusion, resilience, mirror routing, mirror execution, circuit events, options, and lifecycle), added ConfigureAwait(false), and added mirror routing tests. `dotnet test src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/StellaOps.Attestor.Infrastructure.Tests.csproj` passed (56 tests, MTP0001 warning).
- 2026-02-06: Split StubRekorClient into <=100-line partials (submission, proof, inclusion, index, and core helpers) and added stub submission/proof/inclusion tests. `dotnet test src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/StellaOps.Attestor.Infrastructure.Tests.csproj` passed (59 tests, MTP0001 warning).
- 2026-02-06: Split AttestorSigningKeyRegistry into <=100-line partials (providers, key entry registration, provider resolution, material loading) and added unsupported Ed25519 material format coverage in AttestorSigningServiceTests. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj` passed (222 tests, MTP0001 warning).
- 2026-02-06: Split S3AttestorArchiveStore into <=100-line partials (archive, retrieval, metadata, and S3 I/O) and added S3 archive store unit tests. `dotnet test src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/StellaOps.Attestor.Infrastructure.Tests.csproj` passed (61 tests, MTP0001 warning).
- 2026-02-06: Split HttpTransparencyWitnessClient into <=100-line partials (fetch, cache, mapping, models, metrics, and URI helpers) and added API key/query + default mapping tests. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj --no-build -v minimal` passed (224 tests, MTP0001 warning).
- 2026-02-06: Split CachedAttestorVerificationService into <=100-line partials (descriptor helpers), split InMemoryAttestorVerificationCache into <=100-line partials (cache key/index helpers), and added cache-disabled coverage. `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj -v minimal -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (225 tests, warnings: MSB3026, MTP0001).
- 2026-02-06: Split InMemoryAttestorEntryRepository into <=100-line partials (query) and added duplicate bundle + subject filter coverage. `dotnet test src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/StellaOps.Attestor.Infrastructure.Tests.csproj -v minimal` passed (63 tests, MTP0001 warning).
- 2026-02-06: Split InTotoLinkSigningService into <=100-line partials (signing, recording, helpers) and added in-toto link signing coverage. `dotnet test src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/StellaOps.Attestor.Infrastructure.Tests.csproj -v minimal` passed (65 tests, MTP0001 warning).
- 2026-02-06: Split AttestorSigningService into <=100-line partials (signing, bundle/meta, validation, metrics, audit) and added signing bundle/log preference coverage. dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj -v minimal passed (227 tests, MTP0001 warning).

View File

@@ -0,0 +1,162 @@
# Remediation Checklist - StellaOps.Attestor.Tests
## Scope
- Project: src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 39
- Files with issues: 37
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 27 | Tier 1 |
| BlockingAsync | 7 | Tier 2 |
| ConfigureAwaitMissing | 26 | Tier 1 |
| FileLength>100 | 31 | Tier 2 |
| PrivateFieldNaming | 4 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 15 | Tier 0 |
| UsingNotSorted | 33 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Api/ProofsApiContractTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestationBundleEndpointsTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestationQueryTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorEntryRepositoryTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorSigningServiceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorStorageTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorSubmissionServiceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorSubmissionValidatorHardeningTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorVerificationServiceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Auth/AttestorAuthTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/BulkVerificationContractsTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/BulkVerificationWorkerTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/CachedAttestorVerificationServiceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/CheckpointSignatureVerifierTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Contract/AttestorContractSnapshotTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/CorrelationIdTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Fixtures/AttestorTestWebApplicationFactory.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/HttpRekorClientTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/HttpTransparencyWitnessClientTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/LiveDedupeStoreTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/MerkleProofVerifierTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Negative/AttestorNegativeTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Observability/AttestorOTelTraceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/ProofChainQueryServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/ProofVerificationServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/RekorInclusionVerificationIntegrationTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/RekorRetryWorkerTests.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Signing/Sm2AttestorTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TestDoubles.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TestSupport/TestAttestorDoubles.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TimeSkewValidationIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TimeSkewValidatorTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Timestamping/AttestationTimestampServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/WebServiceFeatureGateTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Api/ProofsApiContractTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestationBundleEndpointsTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestationQueryTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorEntryRepositoryTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorSigningServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorStorageTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorSubmissionServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorSubmissionValidatorHardeningTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorVerificationServiceTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Auth/AttestorAuthTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/BulkVerificationWorkerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/CachedAttestorVerificationServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Contract/AttestorContractSnapshotTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/CorrelationIdTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/HttpRekorClientTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/HttpTransparencyWitnessClientTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Integration/Queue/PostgresRekorSubmissionQueueIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/LiveDedupeStoreTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Negative/AttestorNegativeTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Observability/AttestorOTelTraceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/ProofChainQueryServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/ProofVerificationServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/RekorInclusionVerificationIntegrationTests.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/RekorRetryWorkerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TestDoubles.cs | AsyncNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TimeSkewValidationIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Timestamping/AttestationTimestampServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/WebServiceFeatureGateTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Api/ProofsApiContractTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestationBundleEndpointsTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestationQueryTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorEntryRepositoryTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorSigningServiceTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorStorageTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorSubmissionServiceTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorSubmissionValidatorHardeningTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorVerificationServiceTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Auth/AttestorAuthTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/BulkVerificationWorkerTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/CachedAttestorVerificationServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/CheckpointSignatureVerifierTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Contract/AttestorContractSnapshotTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Fixtures/AttestorTestWebApplicationFactory.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/HttpRekorClientTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/HttpTransparencyWitnessClientTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Integration/Queue/PostgresRekorSubmissionQueueIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/MerkleProofVerifierTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Negative/AttestorNegativeTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Observability/AttestorOTelTraceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/RekorInclusionVerificationIntegrationTests.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/RekorRetryWorkerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/RekorSubmissionQueueTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Signing/Sm2AttestorTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TestDoubles.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TestSupport/TestAttestorDoubles.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TimeSkewValidationIntegrationTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TimeSkewValidatorTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Timestamping/AttestationTimestampPolicyTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/Timestamping/AttestationTimestampServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestationBundleEndpointsTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorSigningServiceTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorSubmissionServiceTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/AttestorVerificationServiceTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/BulkVerificationWorkerTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/CachedAttestorVerificationServiceTests.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/CorrelationIdTests.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/HttpRekorClientTests.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/HttpTransparencyWitnessClientTests.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/MerkleProofVerifierTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/ProofVerificationServiceTests.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/RekorInclusionVerificationIntegrationTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/RekorRetryWorkerTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/RekorSubmissionQueueTests.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TestDoubles.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TimeSkewValidationIntegrationTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/TimeSkewValidatorTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,87 @@
# Remediation Checklist - StellaOps.Attestor.WebService
## Scope
- Project: src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/StellaOps.Attestor.WebService.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/StellaOps.Attestor.WebService.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 34
- Files with issues: 24
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| BlockingAsync | 1 | Tier 2 |
| FileLength>100 | 24 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/AttestorWebServiceComposition.cs | UsingInsideNamespace | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Services/PredicateTypeRouter.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Controllers/AnchorsController.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Services/PredicateTypeRouter.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/WatchlistEndpoints.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/AttestorWebServiceComposition.cs | FileLength>100; ServiceLocator | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/AttestorWebServiceEndpoints.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Contracts/Anchors/AnchorDtos.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Contracts/AttestationListContracts.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Contracts/BulkVerificationContracts.cs | BlockingAsync; FileLength>100 | Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Contracts/InTotoLinkContracts.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Contracts/Proofs/ProofDtos.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Contracts/Spdx3BuildProfileContracts.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Contracts/VerdictContracts.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Controllers/AnchorsController.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Controllers/BundlesController.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Controllers/ChainController.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Controllers/ProofChainController.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Controllers/ProofsController.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Controllers/VerdictController.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Controllers/VerifyController.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Models/ChainApiModels.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Models/ProofChainModels.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Services/ChainQueryService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Services/IPredicateTypeRouter.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Services/PredicateTypeRouter.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Services/ProofChainQueryService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Services/ProofVerificationService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/WatchlistEndpoints.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): E2E, Integration, Offline, Security, Unit
- Detected test projects: src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj [Unit]
- Missing layers: E2E, Integration, Offline, Security
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/AttestorWebServiceComposition.cs | Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/AttestorWebServiceEndpoints.cs | Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/Program.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/StellaOps.Attestor/StellaOps.Attestor.WebService/WatchlistEndpoints.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
## Remediation Updates
- 2026-02-06: Split BulkVerificationContracts into <=100-line partials (builder, mapping, DTOs). BlockingAsync flagged by `item.Result` mapping; no Task blocking calls present. Added invalid-item guard test; `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj -v minimal` passed (228 tests, MTP0001 warning).
- 2026-02-06: Split PredicateTypeRouter into <=100-line partials, renamed _stellaOpsPredicateTypes, and added standard/stella/unknown routing tests; `dotnet test src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj -v minimal` passed (231 tests, MTP0001 warning).

View File

@@ -0,0 +1,58 @@
# Remediation Checklist - StellaOps.Attestor.Bundle
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.Bundle/StellaOps.Attestor.Bundle.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.Bundle/StellaOps.Attestor.Bundle.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.Bundle
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 8
- Files with issues: 7
| Issue | Count | Tier |
| --- | --- | --- |
| BlockingAsync | 1 | Tier 2 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 7 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundle/Verification/SigstoreBundleVerifier.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundle/Serialization/SigstoreBundleSerializer.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundle/Verification/SigstoreBundleVerifier.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundle/Builder/SigstoreBundleBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundle/Models/SigstoreBundle.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundle/Models/TransparencyLogEntry.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundle/Models/VerificationMaterial.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundle/Serialization/SigstoreBundleSerializer.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundle/Verification/BundleVerificationResult.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundle/Verification/SigstoreBundleVerifier.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/StellaOps.Attestor.Bundle.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,56 @@
# Remediation Checklist - StellaOps.Attestor.Bundling
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.Bundling/StellaOps.Attestor.Bundling.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.Bundling/StellaOps.Attestor.Bundling.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.Bundling
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 10
- Files with issues: 8
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| ConfigureAwaitMissing | 4 | Tier 1 |
| FileLength>100 | 8 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Services/AttestationBundler.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Services/OfflineKitBundleProvider.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Services/RetentionPolicyEnforcer.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Signing/KmsOrgKeySigner.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Abstractions/IAttestationBundler.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Abstractions/IBundleStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Configuration/BundlingOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Models/AttestationBundle.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Services/AttestationBundler.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Services/OfflineKitBundleProvider.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Services/RetentionPolicyEnforcer.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Bundling/Signing/KmsOrgKeySigner.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/StellaOps.Attestor.Bundling.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,59 @@
# Remediation Checklist - StellaOps.Attestor.EvidencePack
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/StellaOps.Attestor.EvidencePack.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/StellaOps.Attestor.EvidencePack.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 5
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| BlockingAsync | 2 | Tier 2 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 5 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/ReleaseEvidencePackBuilder.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/ReleaseEvidencePackSerializer.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/ReleaseEvidencePackSerializer.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/Models/ReleaseEvidencePackManifest.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/Models/VerificationReplayLog.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/ReleaseEvidencePackBuilder.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/ReleaseEvidencePackSerializer.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/Services/VerificationReplayLogBuilder.cs | BlockingAsync; FileLength>100 | Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/StellaOps.Attestor.EvidencePack.IntegrationTests.csproj [Integration]; src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests/StellaOps.Attestor.EvidencePack.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/ReleaseEvidencePackBuilder.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.EvidencePack/ReleaseEvidencePackSerializer.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,59 @@
# Remediation Checklist - StellaOps.Attestor.FixChain
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.FixChain/StellaOps.Attestor.FixChain.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.FixChain/StellaOps.Attestor.FixChain.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.FixChain
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 5
| Issue | Count | Tier |
| --- | --- | --- |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 5 | Tier 2 |
| PrivateFieldNaming | 3 | Tier 1 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainAttestationService.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainStatementBuilder.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainValidator.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainAttestationService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainModels.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainStatementBuilder.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainValidator.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Libraries/__Tests/StellaOps.Attestor.FixChain.Tests/StellaOps.Attestor.FixChain.Tests.csproj [Unit]; src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/StellaOps.Attestor.FixChain.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainAttestationService.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainModels.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainPredicate.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainStatementBuilder.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/FixChainValidator.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.FixChain/ServiceCollectionExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,52 @@
# Remediation Checklist - StellaOps.Attestor.GraphRoot
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.GraphRoot/StellaOps.Attestor.GraphRoot.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.GraphRoot/StellaOps.Attestor.GraphRoot.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.GraphRoot
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 11
- Files with issues: 4
| Issue | Count | Tier |
| --- | --- | --- |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 3 | Tier 2 |
| ServiceLocator | 1 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.GraphRoot/GraphRootAttestor.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.GraphRoot/GraphRootAttestor.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.GraphRoot/GraphRootServiceCollectionExtensions.cs | ServiceLocator | Remove service locator usage; use constructor injection. |
| src/Attestor/__Libraries/StellaOps.Attestor.GraphRoot/Models/GraphRootPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.GraphRoot/Models/GraphRootResults.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/StellaOps.Attestor.GraphRoot.Tests.csproj [Unit]; src/Attestor/__Tests/StellaOps.Attestor.GraphRoot.Tests/StellaOps.Attestor.GraphRoot.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.GraphRoot/GraphRootAttestor.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.GraphRoot/GraphRootServiceCollectionExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,54 @@
# Remediation Checklist - StellaOps.Attestor.Oci
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.Oci/StellaOps.Attestor.Oci.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.Oci/StellaOps.Attestor.Oci.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.Oci
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 5
- Files with issues: 5
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| FileLength>100 | 5 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Oci/Services/OrasAttestationAttacher.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Oci/Services/SbomOciPublisher.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Oci/Services/IOciAttestationAttacher.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Oci/Services/IOciRegistryClient.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Oci/Services/ISbomOciPublisher.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Oci/Services/OrasAttestationAttacher.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Oci/Services/SbomOciPublisher.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/StellaOps.Attestor.Oci.Tests.csproj [Unit]; src/Cli/__Tests/StellaOps.Cli.Tests/StellaOps.Cli.Tests.csproj [CLI]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,60 @@
# Remediation Checklist - StellaOps.Attestor.Offline
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.Offline/StellaOps.Attestor.Offline.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.Offline/StellaOps.Attestor.Offline.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.Offline
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 7
- Files with issues: 6
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 3 | Tier 1 |
| FileLength>100 | 6 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
| UsingInsideNamespace | 3 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Services/FileSystemRootStore.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Services/OfflineVerifier.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Services/RuleBundleSignatureVerifier.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Services/FileSystemRootStore.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Services/OfflineVerifier.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Services/RuleBundleSignatureVerifier.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Abstractions/IOfflineRootStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Abstractions/IRuleBundleSignatureVerifier.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Models/OfflineVerificationResult.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Services/FileSystemRootStore.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Services/OfflineVerifier.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Offline/Services/RuleBundleSignatureVerifier.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/StellaOps.Attestor.Conformance.Tests.csproj [Unit]; src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/StellaOps.Attestor.Offline.Tests.csproj [Offline]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,52 @@
# Remediation Checklist - StellaOps.Attestor.Persistence
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.Persistence/StellaOps.Attestor.Persistence.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.Persistence/StellaOps.Attestor.Persistence.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.Persistence
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 12
- Files with issues: 4
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Persistence/Repositories/PostgresVerdictLedgerRepository.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Persistence/Services/TrustAnchorMatcher.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Persistence/ProofChainDbContext.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Persistence/Repositories/IProofChainRepository.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Persistence/Repositories/PostgresVerdictLedgerRepository.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Persistence/Services/TrustAnchorMatcher.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Integration, Unit
- Detected test projects: src/Attestor/__Tests/StellaOps.Attestor.Persistence.Tests/StellaOps.Attestor.Persistence.Tests.csproj [Unit]
- Missing layers: Integration
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Persistence/ProofChainDbContext.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,114 @@
# Remediation Checklist - StellaOps.Attestor.ProofChain
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/StellaOps.Attestor.ProofChain.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/StellaOps.Attestor.ProofChain.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.ProofChain
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 85
- Files with issues: 54
| Issue | Count | Tier |
| --- | --- | --- |
| BlockingAsync | 2 | Tier 2 |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 53 | Tier 2 |
| PrivateFieldNaming | 3 | Tier 1 |
| UsingInsideNamespace | 6 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Generators/BackportProofGenerator.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Generators/BinaryFingerprintEvidenceGenerator.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Json/IJsonSchemaValidator.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Json/Rfc8785JsonCanonicalizer.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Sbom/CycloneDxSubjectExtractor.cs | UsingInsideNamespace | Move using directives outside namespace. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Services/UnknownsAggregator.cs | UsingInsideNamespace | Move using directives outside namespace.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Identifiers/ContentAddressedIdGenerator.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Json/Rfc8785JsonCanonicalizer.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Signing/ProofChainSigner.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Verification/AIArtifactVerificationStep.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Verification/VerificationPipeline.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Assembly/IProofSpineAssembler.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Audit/AuditHashLogger.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Builders/IStatementBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Builders/StatementBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/ChangeTrace/ChangeTraceAttestationService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Generators/BackportProofGenerator.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Generators/BinaryFingerprintEvidenceGenerator.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Generators/VexProofIntegrator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Graph/IProofGraphService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Graph/InMemoryProofGraphService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Identifiers/ContentAddressedId.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Identifiers/ContentAddressedIdGenerator.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Json/IJsonSchemaValidator.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Json/Rfc8785JsonCanonicalizer.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Linking/ComponentRefExtractor.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Merkle/DeterministicMerkleTreeBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Merkle/IMerkleTreeBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Models/ProofBlob.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Pipeline/IProofChainPipeline.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/AI/AIArtifactBasePredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/AI/AIAuthorityClassifier.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/AI/AIExplanationPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/AI/AIPolicyDraftPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/AI/AIRemediationPlanPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/AI/AIVexDraftPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/BinaryFingerprintEvidencePredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/BinaryMicroWitnessPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/BudgetCheckPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/ChangeTracePredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/DeltaVerdictPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/PolicyDecisionPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/ReachabilityDriftPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/SbomDeltaPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/UnknownsBudgetPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/VerdictDeltaPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/VexAttestationPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Predicates/VexDeltaPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Receipts/IReceiptGenerator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Rekor/EnhancedRekorProof.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Replay/AIArtifactReplayManifest.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Replay/IAIArtifactReplayer.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Services/UnknownsAggregator.cs | BlockingAsync; FileLength>100 | Move using directives outside namespace.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Signing/IProofChainSigner.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Signing/ProofChainSigner.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Statements/ReachabilityDriftStatement.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Statements/ReachabilityWitnessStatement.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Statements/SbomLinkageStatement.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Statements/UncertaintyBudgetStatement.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Statements/UncertaintyStatement.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Statements/VerdictReceiptStatement.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Verification/AIArtifactVerificationStep.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Verification/IVerificationPipeline.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/Verification/VerificationPipeline.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/__Tests/__Benchmarks/proof-chain/StellaOps.Bench.ProofChain.csproj [Performance] (no test attributes detected); src/__Tests/Integration/StellaOps.Integration.AirGap/StellaOps.Integration.AirGap.csproj [Integration, Offline] (no test attributes detected); src/__Tests/Integration/StellaOps.Integration.Determinism/StellaOps.Integration.Determinism.csproj [Integration]; src/__Tests/Integration/StellaOps.Integration.E2E/StellaOps.Integration.E2E.csproj [E2E, Integration]; src/__Tests/Integration/StellaOps.Integration.Performance/StellaOps.Integration.Performance.csproj [Integration, Performance]; src/__Tests/Integration/StellaOps.Integration.ProofChain/StellaOps.Integration.ProofChain.csproj [Integration]; src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/StellaOps.Attestor.ProofChain.Tests.csproj [Unit]; src/Scanner/__Tests/StellaOps.Scanner.SmartDiff.Tests/StellaOps.Scanner.SmartDiff.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.ProofChain/ProofHashing.cs | Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,54 @@
# Remediation Checklist - StellaOps.Attestor.Spdx3
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/StellaOps.Attestor.Spdx3.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/StellaOps.Attestor.Spdx3.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.Spdx3
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 5
- Files with issues: 5
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 5 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/BuildAttestationMapper.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/BuildRelationshipBuilder.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
- No Tier 1 issues detected in file-audit.csv.
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/BuildAttestationMapper.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/BuildRelationshipBuilder.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/CombinedDocumentBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/DsseSpdx3Signer.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/IBuildAttestationMapper.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/StellaOps.Attestor.Spdx3.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/CombinedDocumentBuilder.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/DsseSpdx3Signer.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.Spdx3/IBuildAttestationMapper.cs | Split types into separate files grouped by responsibility. |

View File

@@ -0,0 +1,77 @@
# Remediation Checklist - StellaOps.Attestor.StandardPredicates
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/StellaOps.Attestor.StandardPredicates.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/StellaOps.Attestor.StandardPredicates.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 34
- Files with issues: 20
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 19 | Tier 2 |
| PrivateFieldNaming | 5 | Tier 1 |
| UsingInsideNamespace | 4 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/BinaryDiff/BinaryDiffDsseVerifier.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Canonicalization/SbomCanonicalizer.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Licensing/SpdxLicenseList.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/VexOverride/VexOverridePredicateBuilder.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/BinaryDiff/BinaryDiffPredicateSerializer.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/BinaryDiff/BinaryDiffSchema.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/JsonCanonicalizer.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Licensing/SpdxLicenseList.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Writers/CycloneDxWriter.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/BinaryDiff/BinaryDiffDsseVerifier.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/BinaryDiff/BinaryDiffModels.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/BinaryDiff/BinaryDiffPredicateBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/BinaryDiff/BinaryDiffPredicateSerializer.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/BinaryDiff/BinaryDiffSchema.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Canonicalization/SbomCanonicalizer.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Licensing/SpdxLicenseList.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Models/SbomDocument.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Parsers/CycloneDxPredicateParser.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Parsers/SlsaProvenancePredicateParser.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Parsers/SpdxPredicateParser.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Validation/SlsaSchemaValidator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/VexOverride/VexOverridePredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/VexOverride/VexOverridePredicateBuilder.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/VexOverride/VexOverridePredicateParser.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Writers/CycloneDxTimestampExtension.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Writers/CycloneDxWriter.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Writers/SpdxTimestampExtension.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/Writers/SpdxWriter.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/StellaOps.Attestor.EvidencePack.IntegrationTests.csproj [Integration]; src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/StellaOps.Attestor.StandardPredicates.Tests.csproj [Unit]; src/ReleaseOrchestrator/__Tests/StellaOps.ReleaseOrchestrator.Integration.Tests/StellaOps.ReleaseOrchestrator.Integration.Tests.csproj [Integration]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/JsonCanonicalizer.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/__Libraries/StellaOps.Attestor.StandardPredicates/PredicateParseResult.cs | Split types into separate files grouped by responsibility. |

View File

@@ -0,0 +1,58 @@
# Remediation Checklist - StellaOps.Attestor.Timestamping
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/StellaOps.Attestor.Timestamping.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/StellaOps.Attestor.Timestamping.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.Timestamping
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 6
| Issue | Count | Tier |
| --- | --- | --- |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 6 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/AttestationTimestampService.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/TimeCorrelationValidator.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/AttestationTimestampPolicyContext.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/AttestationTimestampService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/IAttestationTimestampService.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/ITimeCorrelationValidator.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/TimeCorrelationValidator.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/TimestampedAttestation.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/StellaOps.Attestor/StellaOps.Attestor.Tests/StellaOps.Attestor.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/AttestationTimestampPolicyContext.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/AttestationTimestampService.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/IAttestationTimestampService.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/ITimeCorrelationValidator.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/TimeCorrelationValidator.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.Timestamping/TimestampedAttestation.cs | Split types into separate files grouped by responsibility. |

View File

@@ -0,0 +1,76 @@
# Remediation Checklist - StellaOps.Attestor.TrustRepo
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/StellaOps.Attestor.TrustRepo.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/StellaOps.Attestor.TrustRepo.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 10
- Files with issues: 10
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 4 | Tier 1 |
| BlockingAsync | 2 | Tier 2 |
| ConfigureAwaitMissing | 4 | Tier 1 |
| FileLength>100 | 10 | Tier 2 |
| PrivateFieldNaming | 4 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufKeyLoader.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufMetadataVerifier.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/SigstoreServiceMapLoader.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufClient.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufKeyLoader.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufMetadataStore.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufMetadataVerifier.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/ITufClient.cs | BlockingAsync; FileLength>100 | Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/Models/SigstoreServiceMap.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/Models/TufModels.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/SigstoreServiceMapLoader.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TrustRepoOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TrustRepoServiceCollectionExtensions.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufClient.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufKeyLoader.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufMetadataStore.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufMetadataVerifier.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/StellaOps.Attestor.TrustRepo.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/ITufClient.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/SigstoreServiceMapLoader.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TrustRepoOptions.cs | Split types into separate files grouped by responsibility.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TrustRepoServiceCollectionExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufClient.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufKeyLoader.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufMetadataStore.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustRepo/TufMetadataVerifier.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,61 @@
# Remediation Checklist - StellaOps.Attestor.TrustVerdict.Tests
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/StellaOps.Attestor.TrustVerdict.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/StellaOps.Attestor.TrustVerdict.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 5
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| ConfigureAwaitMissing | 3 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustVerdictRepositoryMappingTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustVerdictServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustVerdictCacheTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustVerdictOciAttacherTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustVerdictServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustEvidenceMerkleBuilderTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustVerdictCacheTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustVerdictRepositoryMappingTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustVerdictServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustEvidenceMerkleBuilderTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustVerdictCacheTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/TrustVerdictServiceTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,60 @@
# Remediation Checklist - StellaOps.Attestor.TrustVerdict
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/StellaOps.Attestor.TrustVerdict.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/StellaOps.Attestor.TrustVerdict.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 9
- Files with issues: 9
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| ConfigureAwaitMissing | 3 | Tier 1 |
| FileLength>100 | 8 | Tier 2 |
| PrivateFieldNaming | 2 | Tier 1 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/Caching/TrustVerdictCache.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/JsonCanonicalizer.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/Persistence/TrustVerdictRepository.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/Services/TrustVerdictService.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/Caching/TrustVerdictCache.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/Evidence/TrustEvidenceMerkleBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/Oci/TrustVerdictOciAttacher.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/Persistence/TrustVerdictRepository.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/Predicates/TrustVerdictPredicate.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/Services/TrustVerdictService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/Telemetry/TrustVerdictMetrics.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/TrustVerdictServiceCollectionExtensions.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict.Tests/StellaOps.Attestor.TrustVerdict.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/JsonCanonicalizer.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/__Libraries/StellaOps.Attestor.TrustVerdict/TrustVerdictServiceCollectionExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,68 @@
# Remediation Checklist - StellaOps.Attestor.Watchlist
## Scope
- Project: src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/StellaOps.Attestor.Watchlist.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/StellaOps.Attestor.Watchlist.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/StellaOps.Attestor.Watchlist
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 18
- Files with issues: 11
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| ConfigureAwaitMissing | 4 | Tier 1 |
| FileLength>100 | 11 | Tier 2 |
| PrivateFieldNaming | 3 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Matching/IdentityMatcher.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Monitoring/IdentityMonitorService.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Matching/IdentityMatcher.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Monitoring/IdentityMonitorBackgroundService.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Monitoring/IdentityMonitorService.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Storage/PostgresWatchlistRepository.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Events/IdentityAlertEvent.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Matching/IdentityMatcher.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Matching/PatternCompiler.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Models/IdentityMatchResult.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Models/WatchedIdentity.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Monitoring/IdentityMonitorBackgroundService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Monitoring/IdentityMonitorService.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/ServiceCollectionExtensions.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Storage/IWatchlistRepository.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Storage/InMemoryWatchlistRepository.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/Storage/PostgresWatchlistRepository.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/StellaOps.Attestor.Watchlist.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/StellaOps.Attestor.Watchlist/ServiceCollectionExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,54 @@
# Remediation Checklist - StellaOps.Attestor.FixChain.Tests
## Scope
- Project: src/Attestor/__Libraries/__Tests/StellaOps.Attestor.FixChain.Tests/StellaOps.Attestor.FixChain.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/__Tests/StellaOps.Attestor.FixChain.Tests/StellaOps.Attestor.FixChain.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/__Tests/StellaOps.Attestor.FixChain.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 3 | Tier 2 |
| UsingNotSorted | 3 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainPredicateTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainStatementBuilderTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainValidatorTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainStatementBuilderTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainPredicateTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainStatementBuilderTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainValidatorTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,63 @@
# Remediation Checklist - StellaOps.Attestor.GraphRoot.Tests
## Scope
- Project: src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/StellaOps.Attestor.GraphRoot.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/StellaOps.Attestor.GraphRoot.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 4
- Files with issues: 4
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
| PrivateFieldNaming | 2 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingNotSorted | 4 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootAttestorTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootModelsTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootPipelineIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/Sha256MerkleRootComputerTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootAttestorTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootPipelineIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootAttestorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootModelsTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootPipelineIntegrationTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/Sha256MerkleRootComputerTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootAttestorTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootModelsTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootPipelineIntegrationTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,61 @@
# Remediation Checklist - StellaOps.Attestor.Spdx3.Tests
## Scope
- Project: src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/StellaOps.Attestor.Spdx3.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/StellaOps.Attestor.Spdx3.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 4
- Files with issues: 4
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
| PrivateFieldNaming | 2 | Tier 1 |
| UsingNotSorted | 4 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/BuildAttestationMapperTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/BuildProfileValidatorTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/CombinedDocumentBuilderTests.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/DsseSpdx3SignerTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/CombinedDocumentBuilderTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/DsseSpdx3SignerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/BuildAttestationMapperTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/BuildProfileValidatorTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/CombinedDocumentBuilderTests.cs | FileLength>100 | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/DsseSpdx3SignerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/CombinedDocumentBuilderTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.Spdx3.Tests/DsseSpdx3SignerTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,63 @@
# Remediation Checklist - StellaOps.Attestor.TrustRepo.Tests
## Scope
- Project: src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/StellaOps.Attestor.TrustRepo.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/StellaOps.Attestor.TrustRepo.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| BlockingAsync | 1 | Tier 2 |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 3 | Tier 2 |
| PrivateFieldNaming | 2 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
| UsingNotSorted | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/SigstoreServiceMapTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/TufModelsTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/SigstoreServiceMapTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/TufMetadataStoreTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/TufModelsTests.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/SigstoreServiceMapTests.cs | BlockingAsync; FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/TufMetadataStoreTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/TufModelsTests.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/SigstoreServiceMapTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/TufMetadataStoreTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Libraries/__Tests/StellaOps.Attestor.TrustRepo.Tests/TufModelsTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,59 @@
# Remediation Checklist - StellaOps.Attestor.Bundle.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/StellaOps.Attestor.Bundle.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/StellaOps.Attestor.Bundle.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 3 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 3 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/SigstoreBundleBuilderTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/SigstoreBundleSerializerTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/SigstoreBundleVerifierTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/SigstoreBundleVerifierTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/SigstoreBundleBuilderTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/SigstoreBundleSerializerTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/SigstoreBundleVerifierTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/SigstoreBundleBuilderTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/SigstoreBundleSerializerTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundle.Tests/SigstoreBundleVerifierTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,76 @@
# Remediation Checklist - StellaOps.Attestor.Bundling.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/StellaOps.Attestor.Bundling.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/StellaOps.Attestor.Bundling.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 7
- Files with issues: 7
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 7 | Tier 1 |
| ConfigureAwaitMissing | 7 | Tier 1 |
| FileLength>100 | 7 | Tier 2 |
| PrivateFieldNaming | 7 | Tier 1 |
| UsingInsideNamespace | 2 | Tier 0 |
| UsingNotSorted | 5 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/BundleAggregatorTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/BundleWorkflowIntegrationTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/KmsOrgKeySignerTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/OfflineKitBundleProviderTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/OrgKeySignerTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/AttestationBundlerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/BundleAggregatorTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/BundleWorkflowIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/KmsOrgKeySignerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/OfflineKitBundleProviderTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/OrgKeySignerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/RetentionPolicyEnforcerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/AttestationBundlerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/BundleAggregatorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/BundleWorkflowIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/KmsOrgKeySignerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/OfflineKitBundleProviderTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/OrgKeySignerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/RetentionPolicyEnforcerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/AttestationBundlerTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/BundleAggregatorTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/BundleWorkflowIntegrationTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/KmsOrgKeySignerTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/OfflineKitBundleProviderTests.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/OrgKeySignerTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Bundling.Tests/RetentionPolicyEnforcerTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,60 @@
# Remediation Checklist - StellaOps.Attestor.Conformance.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/StellaOps.Attestor.Conformance.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/StellaOps.Attestor.Conformance.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 4
- Files with issues: 4
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| ConfigureAwaitMissing | 3 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
| UsingNotSorted | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/ConformanceTestFixture.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/CheckpointParityTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/InclusionProofParityTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/VerificationParityTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/CheckpointParityTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/ConformanceTestFixture.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/InclusionProofParityTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/VerificationParityTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/CheckpointParityTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/ConformanceTestFixture.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/InclusionProofParityTests.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/__Tests/StellaOps.Attestor.Conformance.Tests/VerificationParityTests.cs | Split types into separate files grouped by responsibility. |

View File

@@ -0,0 +1,67 @@
# Remediation Checklist - StellaOps.Attestor.EvidencePack.IntegrationTests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/StellaOps.Attestor.EvidencePack.IntegrationTests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/StellaOps.Attestor.EvidencePack.IntegrationTests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 5
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| ConfigureAwaitMissing | 3 | Tier 1 |
| FileLength>100 | 5 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
| UsingNotSorted | 5 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/EvidencePackGenerationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/OfflineVerificationTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/ReproducibilityTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/SlsaStrictValidationTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/TamperDetectionTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/EvidencePackGenerationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/OfflineVerificationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/TamperDetectionTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/EvidencePackGenerationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/OfflineVerificationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/ReproducibilityTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/SlsaStrictValidationTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/TamperDetectionTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/EvidencePackGenerationTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/OfflineVerificationTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/ReproducibilityTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/SlsaStrictValidationTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.IntegrationTests/TamperDetectionTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,53 @@
# Remediation Checklist - StellaOps.Attestor.EvidencePack.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests/StellaOps.Attestor.EvidencePack.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests/StellaOps.Attestor.EvidencePack.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| BlockingAsync | 1 | Tier 2 |
| FileLength>100 | 3 | Tier 2 |
| UsingNotSorted | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests/ReleaseEvidencePackManifestTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests/VerificationReplayLogBuilderTests.cs | UsingNotSorted | Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
- No Tier 1 issues detected in file-audit.csv.
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests/ReleaseEvidencePackBuilderTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests/ReleaseEvidencePackManifestTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests/VerificationReplayLogBuilderTests.cs | BlockingAsync; FileLength>100 | Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests/ReleaseEvidencePackBuilderTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests/ReleaseEvidencePackManifestTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.EvidencePack.Tests/VerificationReplayLogBuilderTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,60 @@
# Remediation Checklist - StellaOps.Attestor.FixChain.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/StellaOps.Attestor.FixChain.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/StellaOps.Attestor.FixChain.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 4
- Files with issues: 4
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| ConfigureAwaitMissing | 3 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
| UsingNotSorted | 4 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/Integration/FixChainAttestationIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainAttestationServiceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainStatementBuilderTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainValidatorTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/Integration/FixChainAttestationIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainAttestationServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainStatementBuilderTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/Integration/FixChainAttestationIntegrationTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainAttestationServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainStatementBuilderTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.FixChain.Tests/Unit/FixChainValidatorTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,43 @@
# Remediation Checklist - StellaOps.Attestor.GraphRoot.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.GraphRoot.Tests/StellaOps.Attestor.GraphRoot.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.GraphRoot.Tests/StellaOps.Attestor.GraphRoot.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.GraphRoot.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 1
- Files with issues: 1
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 1 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
- No Tier 1 issues detected in file-audit.csv.
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.GraphRoot.Tests/GraphRootTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,67 @@
# Remediation Checklist - StellaOps.Attestor.Infrastructure.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/StellaOps.Attestor.Infrastructure.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/StellaOps.Attestor.Infrastructure.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 6
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 5 | Tier 1 |
| ConfigureAwaitMissing | 5 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
| PrivateFieldNaming | 3 | Tier 1 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 5 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/DefaultDsseCanonicalizerTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/HttpRekorClientTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/HttpRekorTileClientTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/InMemoryAttestorEntryRepositoryTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/RekorBackendResolverTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/DefaultDsseCanonicalizerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/HttpRekorClientTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/HttpRekorTileClientTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/InMemoryAttestorEntryRepositoryTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/Verification/RekorVerificationJobIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/HttpRekorClientTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/HttpRekorTileClientTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/RekorBackendResolverTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/Verification/RekorVerificationJobIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/HttpRekorClientTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/HttpRekorTileClientTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Infrastructure.Tests/RekorBackendResolverTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,61 @@
# Remediation Checklist - StellaOps.Attestor.Oci.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/StellaOps.Attestor.Oci.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/StellaOps.Attestor.Oci.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 4
- Files with issues: 4
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| ConfigureAwaitMissing | 3 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
| UsingNotSorted | 3 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/OciAttestationAttacherIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/OrasAttestationAttacherTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/SbomOciPublisherTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/OciAttestationAttacherIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/OrasAttestationAttacherTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/SbomOciPublisherTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/OciAttestationAttacherIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/OciReferenceTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/OrasAttestationAttacherTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/SbomOciPublisherTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/OrasAttestationAttacherTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Oci.Tests/SbomOciPublisherTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,62 @@
# Remediation Checklist - StellaOps.Attestor.Offline.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/StellaOps.Attestor.Offline.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/StellaOps.Attestor.Offline.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 3
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| ConfigureAwaitMissing | 3 | Tier 1 |
| FileLength>100 | 3 | Tier 2 |
| PrivateFieldNaming | 3 | Tier 1 |
| UsingInsideNamespace | 3 | Tier 0 |
| UsingNotSorted | 3 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/FileSystemRootStoreTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/OfflineCertChainValidatorTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/OfflineVerifierTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/FileSystemRootStoreTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/OfflineCertChainValidatorTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/OfflineVerifierTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/FileSystemRootStoreTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/OfflineCertChainValidatorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/OfflineVerifierTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/FileSystemRootStoreTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/OfflineCertChainValidatorTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.Offline.Tests/OfflineVerifierTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,52 @@
# Remediation Checklist - StellaOps.Attestor.Persistence.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.Persistence.Tests/StellaOps.Attestor.Persistence.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.Persistence.Tests/StellaOps.Attestor.Persistence.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.Persistence.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 2
- Files with issues: 2
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Persistence.Tests/ProofChainDbContextTests.cs | UsingInsideNamespace | Move using directives outside namespace. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Persistence.Tests/TrustAnchorMatcherTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Persistence.Tests/TrustAnchorMatcherTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Persistence.Tests/TrustAnchorMatcherTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,92 @@
# Remediation Checklist - StellaOps.Attestor.ProofChain.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/StellaOps.Attestor.ProofChain.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/StellaOps.Attestor.ProofChain.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 20
- Files with issues: 16
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| BlockingAsync | 1 | Tier 2 |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 14 | Tier 2 |
| PrivateFieldNaming | 8 | Tier 1 |
| UsingInsideNamespace | 2 | Tier 0 |
| UsingNotSorted | 11 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/BinaryMicroWitnessPredicateTests.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/ChangeTrace/ChangeTracePredicateTests.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Envelope/DsseEnvelopeDeterminismTests.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/JsonCanonicalizerTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/MerkleTreeBuilderTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/PredicateSchemaValidatorTests.cs | UsingInsideNamespace | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/ProofSpineAssemblyIntegrationTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/DeltaVerdictStatementTests.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/InTotoStatementSnapshotTests.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/StatementBuilderTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/UncertaintyStatementTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/UnknownsBudgetPredicateTests.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/BinaryMicroWitnessPredicateTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/ChangeTrace/ChangeTracePredicateTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/ContentAddressedIdTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Envelope/DsseEnvelopeDeterminismTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/PredicateSchemaValidatorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Signing/ProofChainSignerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/DeltaVerdictStatementTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/InTotoStatementSnapshotTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/UnknownsBudgetPredicateTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/BinaryMicroWitnessPredicateTests.cs | FileLength>100 | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/ChangeTrace/ChangeTracePredicateTests.cs | FileLength>100 | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/ContentAddressedIdGeneratorTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/ContentAddressedIdTests.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Envelope/DsseEnvelopeDeterminismTests.cs | FileLength>100 | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/JsonCanonicalizerTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/MerkleTreeBuilderTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/ProofSpineAssemblyIntegrationTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Services/UnknownsAggregatorTests.cs | BlockingAsync; FileLength>100 | Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Signing/ProofChainSignerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/InTotoStatementSnapshotTests.cs | FileLength>100 | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/StatementBuilderTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/UncertaintyStatementTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/Statements/UnknownsBudgetPredicateTests.cs | FileLength>100 | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/AuditHashLoggerTests.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/BackportProofGeneratorTests.cs | Split types into separate files grouped by responsibility. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/BinaryMicroWitnessPredicateTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/ContentAddressedIdGeneratorTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/ContentAddressedIdTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.ProofChain.Tests/ProofSpineAssemblyIntegrationTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,120 @@
# Remediation Checklist - StellaOps.Attestor.StandardPredicates.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/StellaOps.Attestor.StandardPredicates.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/StellaOps.Attestor.StandardPredicates.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 36
- Files with issues: 35
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 27 | Tier 2 |
| UsingInsideNamespace | 23 | Tier 0 |
| UsingNotSorted | 35 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/BinaryDiff/BinaryDiffDsseSignerTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/BinaryDiff/BinaryDiffPredicateBuilderTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/BinaryDiff/BinaryDiffPredicateSerializerTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/BinaryDiff/BinaryDiffSchemaValidationTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/BinaryDiff/BinaryDiffTestData.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/CycloneDxDeterminismTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/CycloneDxFeatureGenerationTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/CycloneDxSchemaValidationTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/CycloneDxTestData.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/Parsers/CycloneDxPredicateParserTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/Parsers/SlsaProvenancePredicateParserTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/Parsers/SpdxPredicateParserTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SerialNumberDerivationTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxDeterminismTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxSchemaValidationTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterAiProfileTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterCoreProfileTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterCoverageTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterDatasetProfileTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterExtensionTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterIntegrityIdentifierEdgeTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterIntegrityMethodsTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterLicenseEdgeTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterLicensingProfileTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterLiteProfileTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterNamespaceImportTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterRelationshipMappingTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterSecurityEdgeTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterSecurityProfileTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterSoftwareProfileTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/StandardPredicateRegistryTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/TimestampExtensionTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/Validation/SlsaSchemaValidatorTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/VexOverride/VexOverridePredicateBuilderTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/VexOverride/VexOverridePredicateParserTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/BinaryDiff/BinaryDiffDsseSignerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/BinaryDiff/BinaryDiffPredicateBuilderTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/BinaryDiff/BinaryDiffTestData.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/CycloneDxDeterminismTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/CycloneDxFeatureGenerationTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/CycloneDxTestData.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/Parsers/SpdxPredicateParserTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SerialNumberDerivationTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxDeterminismTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterAiProfileTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterCoreProfileTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterCoverageTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterExtensionTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterIntegrityIdentifierEdgeTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterIntegrityMethodsTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterLicenseEdgeTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterLicensingProfileTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterLiteProfileTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterNamespaceImportTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterRelationshipMappingTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterSecurityEdgeTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterSecurityProfileTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterSoftwareProfileTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/StandardPredicateRegistryTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/TimestampExtensionTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/Validation/SlsaSchemaValidatorTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/VexOverride/VexOverridePredicateBuilderTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/VexOverride/VexOverridePredicateParserTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/CycloneDxFeatureGenerationTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/CycloneDxTestData.cs | Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SerialNumberDerivationTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxDeterminismTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterCoreProfileTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterCoverageTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/SpdxWriterNamespaceImportTests.cs | Extract helpers to reduce file size and complexity. |
| src/Attestor/__Tests/StellaOps.Attestor.StandardPredicates.Tests/StandardPredicateRegistryTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,75 @@
# Remediation Checklist - StellaOps.Attestor.Types.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/StellaOps.Attestor.Types.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/StellaOps.Attestor.Types.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.Types.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 8
- Files with issues: 8
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| BlockingAsync | 1 | Tier 2 |
| ConfigureAwaitMissing | 3 | Tier 1 |
| FileLength>100 | 7 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
| UsingInsideNamespace | 3 | Tier 0 |
| UsingNotSorted | 8 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/AttestationGoldenSamplesTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Determinism/AttestationDeterminismTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/GeneratorOutputTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Integration/SbomAttestationSignVerifyIntegrationTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Rekor/RekorInclusionProofTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Rekor/RekorReceiptGenerationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Rekor/RekorReceiptVerificationTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/SmartDiffSchemaValidationTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Determinism/AttestationDeterminismTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Integration/SbomAttestationSignVerifyIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Rekor/RekorReceiptGenerationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/SmartDiffSchemaValidationTests.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/AttestationGoldenSamplesTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Determinism/AttestationDeterminismTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Integration/SbomAttestationSignVerifyIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Rekor/RekorInclusionProofTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Rekor/RekorReceiptGenerationTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/Rekor/RekorReceiptVerificationTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/SmartDiffSchemaValidationTests.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.
## Remediation Updates
- 2026-02-05: Split AttestationDeterminism, SbomAttestationSignVerify integration, Rekor receipt/proof, and golden sample tests into <=100-line partials; sorted/moved usings; async test names suffixed Async; blocking .Result replaced with await.
- 2026-02-05: ConfigureAwait(false) intentionally omitted in xUnit tests due to xUnit1030 (per sprint decision).
- 2026-02-05: Added schema metadata assertion ($schema), missing schemaVersion negative test, Rekor empty-tree and log URL stability coverage, and expanded golden sample assertions.
- 2026-02-05: `dotnet test src/Attestor/__Tests/StellaOps.Attestor.Types.Tests/StellaOps.Attestor.Types.Tests.csproj` passed 84 tests (MTP0001 warning: VSTest properties ignored).

View File

@@ -0,0 +1,60 @@
# Remediation Checklist - StellaOps.Attestor.Verify.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.Verify.Tests/StellaOps.Attestor.Verify.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.Verify.Tests/StellaOps.Attestor.Verify.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.Verify.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 1
- Files with issues: 1
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| BlockingAsync | 1 | Tier 2 |
| FileLength>100 | 1 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Verify.Tests/AttestorVerificationEngineTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Verify.Tests/AttestorVerificationEngineTests.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Verify.Tests/AttestorVerificationEngineTests.cs | BlockingAsync; FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Verify.Tests/AttestorVerificationEngineTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-05: Split AttestorVerificationEngineTests into <=100-line partials, renamed async tests to Async suffixes, moved helpers into dedicated files, and renamed private fields to _camelCase.
- 2026-02-05: Replaced blocking GetAwaiter().GetResult() with async BuildEntryAsync; removed ConfigureAwait(false) from test helpers per xUnit guidance.
- 2026-02-05: Added coverage for bundle-missing skip path, invalid payload base64, required transparency proof missing, and unsupported signer mode handling.
- 2026-02-05: `dotnet test src/Attestor/__Tests/StellaOps.Attestor.Verify.Tests/StellaOps.Attestor.Verify.Tests.csproj` passed (8 tests, MTP0001 warning: VSTest properties ignored).

View File

@@ -0,0 +1,60 @@
# Remediation Checklist - StellaOps.Attestor.Watchlist.Tests
## Scope
- Project: src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/StellaOps.Attestor.Watchlist.Tests.csproj
- Module: Attestor
- Audit detail: docs/implplan/audits/csproj-standards/src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/StellaOps.Attestor.Watchlist.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 7
- Files with issues: 7
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 3 | Tier 1 |
| ConfigureAwaitMissing | 4 | Tier 1 |
| FileLength>100 | 7 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Events/IdentityAlertEventTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Matching/IdentityMatcherTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Monitoring/IdentityMonitorServiceIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Storage/PostgresWatchlistRepositoryTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Storage/WatchlistPostgresFixture.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Events/IdentityAlertEventTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Matching/IdentityMatcherTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Matching/PatternCompilerTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Models/WatchedIdentityTests.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Monitoring/IdentityMonitorServiceIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Storage/PostgresWatchlistRepositoryTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Attestor/__Tests/StellaOps.Attestor.Watchlist.Tests/Storage/WatchlistPostgresFixture.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,51 @@
# Remediation Checklist - StellaOps.Auth.Abstractions.Tests
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests/StellaOps.Auth.Abstractions.Tests.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests/StellaOps.Auth.Abstractions.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 5
- Files with issues: 5
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 3 | Tier 2 |
| UsingNotSorted | 5 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests/AuthAbstractionsConstantsTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests/NetworkMaskMatcherTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests/StellaOpsPrincipalBuilderTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests/StellaOpsProblemResultFactoryTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests/StellaOpsScopesTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
- No Tier 1 issues detected in file-audit.csv.
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests/AuthAbstractionsConstantsTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests/NetworkMaskMatcherTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests/StellaOpsScopesTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,63 @@
# Remediation Checklist - StellaOps.Auth.Abstractions
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOps.Auth.Abstractions.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOps.Auth.Abstractions.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 11
- Files with issues: 6
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 6 | Tier 2 |
| PrivateFieldNaming | 4 | Tier 1 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/NetworkMask.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/NetworkMaskMatcher.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsPrincipalBuilder.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsScopes.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/NetworkMask.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/NetworkMaskMatcher.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsClaimTypes.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsPrincipalBuilder.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsProblemResultFactory.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsScopes.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/__Libraries/__Tests/StellaOps.Configuration.Tests/StellaOps.Configuration.Tests.csproj [Unit]; src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions.Tests/StellaOps.Auth.Abstractions.Tests.csproj [Security]; src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOps.Auth.Client.Tests.csproj [CLI, Security]; src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOps.Auth.ServerIntegration.Tests.csproj [Integration, Security]; src/Findings/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj [Unit]; src/Scanner/__Tests/StellaOps.Scanner.Core.Tests/StellaOps.Scanner.Core.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/AuthorityTelemetry.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsAuthenticationDefaults.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsClaimTypes.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsHttpHeaderNames.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsPrincipalBuilder.cs | Extract helpers to reduce file size and complexity. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsProblemResultFactory.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsScopes.cs | Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsServiceIdentities.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Abstractions/StellaOpsTenancyDefaults.cs | Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,74 @@
# Remediation Checklist - StellaOps.Auth.Client.Tests
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOps.Auth.Client.Tests.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOps.Auth.Client.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 7
- Files with issues: 7
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 6 | Tier 1 |
| ConfigureAwaitMissing | 5 | Tier 1 |
| FileLength>100 | 5 | Tier 2 |
| PrivateFieldNaming | 5 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
| UsingNotSorted | 7 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/MessagingTokenCacheTests.cs | UsingNotSorted | Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/ServiceCollectionExtensionsTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsAuthClientOptionsTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsDiscoveryCacheTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsJwksCacheTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsTokenClientTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/TokenCacheTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/MessagingTokenCacheTests.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/ServiceCollectionExtensionsTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsDiscoveryCacheTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsJwksCacheTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsTokenClientTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/TokenCacheTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/MessagingTokenCacheTests.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/ServiceCollectionExtensionsTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsDiscoveryCacheTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsJwksCacheTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsTokenClientTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/MessagingTokenCacheTests.cs | Split types into separate files grouped by responsibility. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/ServiceCollectionExtensionsTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsDiscoveryCacheTests.cs | Split types into separate files grouped by responsibility. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsJwksCacheTests.cs | Split types into separate files grouped by responsibility. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOpsTokenClientTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,74 @@
# Remediation Checklist - StellaOps.Auth.Client
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOps.Auth.Client.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOps.Auth.Client.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Auth.Client
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 15
- Files with issues: 10
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 6 | Tier 1 |
| BlockingAsync | 1 | Tier 2 |
| FileLength>100 | 7 | Tier 2 |
| PrivateFieldNaming | 8 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 4 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/FileTokenCache.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsDiscoveryCache.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsJwksCache.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsTokenClient.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/FileTokenCache.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/InMemoryTokenCache.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/MessagingTokenCache.cs | AsyncNaming | Rename async methods to end with Async. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsApiAuthenticationOptions.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsAuthClientOptions.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsBearerTokenHandler.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsDiscoveryCache.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsJwksCache.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsTokenClient.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/FileTokenCache.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/ServiceCollectionExtensions.cs | BlockingAsync; FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsAuthClientOptions.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsBearerTokenHandler.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsDiscoveryCache.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsJwksCache.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsTokenClient.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): CLI, Unit
- Detected test projects: src/Authority/StellaOps.Authority/StellaOps.Auth.Client.Tests/StellaOps.Auth.Client.Tests.csproj [CLI, Security]; src/Scanner/__Tests/StellaOps.Scanner.Core.Tests/StellaOps.Scanner.Core.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/ServiceCollectionExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsAuthClientOptions.cs | Extract helpers to reduce file size and complexity. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsDiscoveryCache.cs | Split types into separate files grouped by responsibility. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.Client/StellaOpsTokenClient.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,67 @@
# Remediation Checklist - StellaOps.Auth.ServerIntegration.Tests
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOps.Auth.ServerIntegration.Tests.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOps.Auth.ServerIntegration.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 6
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| BlockingAsync | 1 | Tier 2 |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 2 | Tier 2 |
| PrivateFieldNaming | 3 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 6 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/ServiceCollectionExtensionsTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsAuthorityConfigurationManagerTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsBypassEvaluatorTests.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsResourceServerOptionsTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsResourceServerPoliciesTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsScopeAuthorizationHandlerTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsAuthorityConfigurationManagerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsBypassEvaluatorTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsScopeAuthorizationHandlerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/ServiceCollectionExtensionsTests.cs | ServiceLocator | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsAuthorityConfigurationManagerTests.cs | BlockingAsync; FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsScopeAuthorizationHandlerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsAuthorityConfigurationManagerTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsBypassEvaluatorTests.cs | Split types into separate files grouped by responsibility. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOpsScopeAuthorizationHandlerTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,60 @@
# Remediation Checklist - StellaOps.Auth.ServerIntegration
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOps.Auth.ServerIntegration.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOps.Auth.ServerIntegration.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 8
- Files with issues: 6
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
| PrivateFieldNaming | 4 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsAuthorityConfigurationManager.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsBypassEvaluator.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsResourceServerOptions.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsScopeAuthorizationHandler.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/ServiceCollectionExtensions.cs | ServiceLocator | Remove service locator usage; use constructor injection. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsAuthorityConfigurationManager.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsResourceServerOptions.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsResourceServerPolicies.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsScopeAuthorizationHandler.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration.Tests/StellaOps.Auth.ServerIntegration.Tests.csproj [Integration, Security]; src/Findings/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/ServiceCollectionExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsAuthorityConfigurationManager.cs | Extract helpers to reduce file size and complexity. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsAuthorizationPolicyBuilderExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsResourceServerPolicies.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration/StellaOpsScopeAuthorizationHandler.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,84 @@
# Remediation Checklist - StellaOps.Authority.Plugin.Ldap.Tests
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/StellaOps.Authority.Plugin.Ldap.Tests.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/StellaOps.Authority.Plugin.Ldap.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 16
- Files with issues: 15
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 8 | Tier 1 |
| ConfigureAwaitMissing | 8 | Tier 1 |
| FileLength>100 | 7 | Tier 2 |
| PrivateFieldNaming | 9 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingNotSorted | 14 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Claims/LdapClaimsCacheTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Claims/LdapClaimsEnricherTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/ClientProvisioning/LdapCapabilityProbeTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/ClientProvisioning/LdapCapabilitySnapshotCacheTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/ClientProvisioning/LdapClientProvisioningStoreTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Credentials/LdapCredentialStoreTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Fakes/FakeLdapClaimsCache.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Fakes/FakeLdapConnectionFactory.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/LdapPluginOptionsTests.cs | UsingNotSorted | Remove service locator usage; use constructor injection.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Resilience/LdapConnectorResilienceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Security/LdapConnectorSecurityTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Snapshots/LdapConnectorSnapshotTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/TestHelpers/TestAirgapAuditStore.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/TestHelpers/TestOptionsMonitor.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Claims/LdapClaimsCacheTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Claims/LdapClaimsEnricherTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/ClientProvisioning/LdapCapabilityProbeTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/ClientProvisioning/LdapClientProvisioningStoreTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Credentials/LdapCredentialStoreTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Fakes/FakeLdapConnectionFactory.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/LdapPluginOptionsTests.cs | PrivateFieldNaming | Remove service locator usage; use constructor injection.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Resilience/LdapConnectorResilienceTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Security/LdapConnectorSecurityTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Snapshots/LdapConnectorSnapshotTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/TestHelpers/TestOptionsMonitor.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/TestHelpers/TestTimeProvider.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Claims/LdapClaimsEnricherTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/ClientProvisioning/LdapClientProvisioningStoreTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Credentials/LdapCredentialStoreTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/LdapPluginOptionsTests.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Resilience/LdapConnectorResilienceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Security/LdapConnectorSecurityTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/Snapshots/LdapConnectorSnapshotTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/LdapPluginOptionsTests.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,73 @@
# Remediation Checklist - StellaOps.Authority.Plugin.Ldap
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/StellaOps.Authority.Plugin.Ldap.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/StellaOps.Authority.Plugin.Ldap.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 18
- Files with issues: 12
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 5 | Tier 1 |
| BlockingAsync | 1 | Tier 2 |
| FileLength>100 | 9 | Tier 2 |
| PrivateFieldNaming | 9 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 2 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/ClientProvisioning/LdapCapabilityProbe.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/Connections/DirectoryServicesLdapConnectionFactory.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/Claims/InMemoryLdapClaimsCache.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/Claims/LdapClaimsEnricher.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/Claims/MessagingLdapClaimsCache.cs | AsyncNaming | Rename async methods to end with Async. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/ClientProvisioning/LdapCapabilityProbe.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/ClientProvisioning/LdapClientProvisioningStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/Connections/DirectoryServicesLdapConnectionFactory.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/Credentials/LdapCredentialStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/LdapIdentityProviderPlugin.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/LdapPluginOptions.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/Monitoring/LdapMetrics.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/Claims/LdapClaimsEnricher.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/ClientProvisioning/LdapCapabilityProbe.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/ClientProvisioning/LdapClientProvisioningStore.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/ClientProvisioning/LdapDistinguishedNameHelper.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/Connections/DirectoryServicesLdapConnectionFactory.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/Credentials/LdapCredentialStore.cs | BlockingAsync; FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/LdapIdentityProviderPlugin.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/LdapPluginOptions.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/LdapPluginRegistrar.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Unit
- Detected test projects: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/StellaOps.Authority.Plugin.Ldap.Tests.csproj [Security]
- Missing layers: Unit
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/LdapIdentityProviderPlugin.cs | Extract helpers to reduce file size and complexity. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap/LdapPluginOptions.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,67 @@
# Remediation Checklist - StellaOps.Authority.Plugin.Oidc.Tests
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/StellaOps.Authority.Plugin.Oidc.Tests.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/StellaOps.Authority.Plugin.Oidc.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 6
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 5 | Tier 1 |
| ConfigureAwaitMissing | 5 | Tier 1 |
| FileLength>100 | 5 | Tier 2 |
| PrivateFieldNaming | 3 | Tier 1 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 6 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Credentials/OidcCredentialStoreTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/OidcIdentityProviderPluginTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/OidcPluginOptionsTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Resilience/OidcConnectorResilienceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Security/OidcConnectorSecurityTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Snapshots/OidcConnectorSnapshotTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Credentials/OidcCredentialStoreTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/OidcIdentityProviderPluginTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Resilience/OidcConnectorResilienceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Security/OidcConnectorSecurityTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Snapshots/OidcConnectorSnapshotTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Credentials/OidcCredentialStoreTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/OidcIdentityProviderPluginTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Resilience/OidcConnectorResilienceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Security/OidcConnectorSecurityTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/Snapshots/OidcConnectorSnapshotTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/OidcIdentityProviderPluginTests.cs | Split types into separate files grouped by responsibility. |

View File

@@ -0,0 +1,59 @@
# Remediation Checklist - StellaOps.Authority.Plugin.Oidc
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/StellaOps.Authority.Plugin.Oidc.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/StellaOps.Authority.Plugin.Oidc.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 5
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| FileLength>100 | 3 | Tier 2 |
| PrivateFieldNaming | 3 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/OidcIdentityProviderPlugin.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/Claims/OidcClaimsEnricher.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/Credentials/OidcCredentialStore.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/OidcIdentityProviderPlugin.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/Credentials/OidcCredentialStore.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/OidcIdentityProviderPlugin.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/OidcPluginOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/OidcPluginRegistrar.cs | ServiceLocator | Remove service locator usage; use constructor injection. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Unit
- Detected test projects: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/StellaOps.Authority.Plugin.Oidc.Tests.csproj [Security]
- Missing layers: Unit
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/OidcPluginOptions.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc/OidcPluginRegistrar.cs | Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,65 @@
# Remediation Checklist - StellaOps.Authority.Plugin.Saml.Tests
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/StellaOps.Authority.Plugin.Saml.Tests.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/StellaOps.Authority.Plugin.Saml.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 7
- Files with issues: 6
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 4 | Tier 1 |
| ConfigureAwaitMissing | 4 | Tier 1 |
| FileLength>100 | 4 | Tier 2 |
| PrivateFieldNaming | 2 | Tier 1 |
| UsingInsideNamespace | 3 | Tier 0 |
| UsingNotSorted | 6 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/Resilience/SamlConnectorResilienceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/SamlIdentityProviderPluginTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/SamlMetadataParserTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/SamlPluginOptionsTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/Security/SamlConnectorSecurityTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/Snapshots/SamlConnectorSnapshotTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/Resilience/SamlConnectorResilienceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/SamlIdentityProviderPluginTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/Security/SamlConnectorSecurityTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/Snapshots/SamlConnectorSnapshotTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/Resilience/SamlConnectorResilienceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/SamlIdentityProviderPluginTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/Security/SamlConnectorSecurityTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/Snapshots/SamlConnectorSnapshotTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/SamlIdentityProviderPluginTests.cs | Split types into separate files grouped by responsibility. |

View File

@@ -0,0 +1,62 @@
# Remediation Checklist - StellaOps.Authority.Plugin.Saml
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/StellaOps.Authority.Plugin.Saml.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/StellaOps.Authority.Plugin.Saml.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 7
- Files with issues: 6
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 2 | Tier 1 |
| FileLength>100 | 3 | Tier 2 |
| PrivateFieldNaming | 3 | Tier 1 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 3 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/Credentials/SamlCredentialStore.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/SamlIdentityProviderPlugin.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/SamlMetadataParser.cs | UsingInsideNamespace | Move using directives outside namespace. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/Claims/SamlClaimsEnricher.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/Credentials/SamlCredentialStore.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/SamlIdentityProviderPlugin.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/Credentials/SamlCredentialStore.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/SamlIdentityProviderPlugin.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/SamlPluginOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/SamlPluginRegistrar.cs | ServiceLocator | Remove service locator usage; use constructor injection. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Unit
- Detected test projects: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/StellaOps.Authority.Plugin.Saml.Tests.csproj [Security]
- Missing layers: Unit
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/SamlMetadataParser.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/SamlPluginOptions.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml/SamlPluginRegistrar.cs | Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,81 @@
# Remediation Checklist - StellaOps.Authority.Plugin.Standard.Tests
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StellaOps.Authority.Plugin.Standard.Tests.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StellaOps.Authority.Plugin.Standard.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 10
- Files with issues: 10
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 7 | Tier 1 |
| ConfigureAwaitMissing | 7 | Tier 1 |
| FileLength>100 | 8 | Tier 2 |
| PrivateFieldNaming | 5 | Tier 1 |
| ServiceLocator | 2 | Tier 2 |
| UsingInsideNamespace | 4 | Tier 0 |
| UsingNotSorted | 10 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/Security/CryptoPasswordHasherTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/Security/StandardCredentialAuditLoggerTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardClaimsEnricherTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardClientProvisioningStoreTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardIdentityProviderPluginTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardPluginBootstrapperTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardPluginOptionsTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardPluginRegistrarTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardUserCredentialStoreTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/TestDoubles/InMemoryUserRepository.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/Security/StandardCredentialAuditLoggerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardClaimsEnricherTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardClientProvisioningStoreTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardIdentityProviderPluginTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardPluginBootstrapperTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardPluginRegistrarTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardUserCredentialStoreTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/Security/CryptoPasswordHasherTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/Security/StandardCredentialAuditLoggerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardClientProvisioningStoreTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardPluginBootstrapperTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardPluginOptionsTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardPluginRegistrarTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardUserCredentialStoreTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/TestDoubles/InMemoryUserRepository.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardClientProvisioningStoreTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardIdentityProviderPluginTests.cs | Split types into separate files grouped by responsibility. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardPluginBootstrapperTests.cs | Split types into separate files grouped by responsibility. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardPluginRegistrarTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StandardUserCredentialStoreTests.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,63 @@
# Remediation Checklist - StellaOps.Authority.Plugin.Standard
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/StellaOps.Authority.Plugin.Standard.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/StellaOps.Authority.Plugin.Standard.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 12
- Files with issues: 8
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 4 | Tier 1 |
| FileLength>100 | 5 | Tier 2 |
| PrivateFieldNaming | 6 | Tier 1 |
| ServiceLocator | 2 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/Bootstrap/StandardPluginBootstrapper.cs | UsingInsideNamespace | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/Bootstrap/StandardPluginBootstrapper.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/Security/IPasswordHasher.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/Security/StandardCredentialAuditLogger.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/StandardIdentityProviderPlugin.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/Storage/StandardClientProvisioningStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/Storage/StandardUserCredentialStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/Bootstrap/StandardPluginBootstrapper.cs | ServiceLocator | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/Security/StandardCredentialAuditLogger.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/StandardPluginOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/StandardPluginRegistrar.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/Storage/StandardClientProvisioningStore.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/Storage/StandardUserCredentialStore.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Unit
- Detected test projects: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StellaOps.Authority.Plugin.Standard.Tests.csproj [Security]
- Missing layers: Unit
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard/StandardPluginOptions.cs | Split types into separate files grouped by responsibility. |

View File

@@ -0,0 +1,48 @@
# Remediation Checklist - StellaOps.Authority.Plugin.Unified
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Unified/StellaOps.Authority.Plugin.Unified.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Unified/StellaOps.Authority.Plugin.Unified.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Unified
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 1
- Files with issues: 1
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 1 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Unified/AuthPluginAdapter.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Unified/AuthPluginAdapter.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Unit
- Detected test projects: none
- Missing layers: Unit
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Unified/AuthPluginAdapter.cs | Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,63 @@
# Remediation Checklist - StellaOps.Authority.Plugins.Abstractions.Tests
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/StellaOps.Authority.Plugins.Abstractions.Tests.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/StellaOps.Authority.Plugins.Abstractions.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 11
- Files with issues: 10
| Issue | Count | Tier |
| --- | --- | --- |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 1 | Tier 2 |
| ServiceLocator | 1 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
| UsingNotSorted | 10 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityClientDescriptorNormalizationTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityClientRegistrationTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityCredentialVerificationResultTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityIdentityProviderCapabilitiesTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityIdentityProviderHandleTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityPluginManifestTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityPluginOperationResultTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthoritySecretHasherTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityUserDescriptorTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityUserRegistrationTests.cs | UsingNotSorted | Sort using directives alphabetically. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityIdentityProviderHandleTests.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityIdentityProviderHandleTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthorityIdentityProviderHandleTests.cs | Split types into separate files grouped by responsibility. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/AuthoritySecretHasherTests.cs | Split types into separate files grouped by responsibility. |

View File

@@ -0,0 +1,59 @@
# Remediation Checklist - StellaOps.Authority.Plugins.Abstractions
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/StellaOps.Authority.Plugins.Abstractions.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/StellaOps.Authority.Plugins.Abstractions.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 7
- Files with issues: 3
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 3 | Tier 2 |
| PrivateFieldNaming | 2 | Tier 1 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/AuthoritySecretHasher.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/AuthorityPluginContracts.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/AuthoritySecretHasher.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/AuthorityPluginContracts.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/AuthoritySecretHasher.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/IdentityProviderContracts.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Unit
- Detected test projects: src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/StellaOps.Authority.Plugin.Ldap.Tests.csproj [Security]; src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Oidc.Tests/StellaOps.Authority.Plugin.Oidc.Tests.csproj [Security]; src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Saml.Tests/StellaOps.Authority.Plugin.Saml.Tests.csproj [Security]; src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Standard.Tests/StellaOps.Authority.Plugin.Standard.Tests.csproj [Security]; src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions.Tests/StellaOps.Authority.Plugins.Abstractions.Tests.csproj [Security]; src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/StellaOps.Authority.Tests.csproj [Security]
- Missing layers: Unit
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/AuthorityClientMetadataKeys.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/AuthorityCredentialAuditContext.cs | Split types into separate files grouped by responsibility. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/AuthorityPluginContracts.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/AuthorityPluginRegistrationContext.cs | Split types into separate files grouped by responsibility. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/AuthoritySecretHasher.cs | Split types into separate files grouped by responsibility.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Plugins.Abstractions/IdentityProviderContracts.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |

View File

@@ -0,0 +1,165 @@
# Remediation Checklist - StellaOps.Authority.Tests
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/StellaOps.Authority.Tests.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/StellaOps.Authority.Tests.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority.Tests
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 45
- Files with issues: 44
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 28 | Tier 1 |
| ConfigureAwaitMissing | 29 | Tier 1 |
| FileLength>100 | 34 | Tier 2 |
| NamespaceMissing | 1 | Tier 2 |
| NamespaceNotFileScoped | 1 | Tier 1 |
| PrivateFieldNaming | 23 | Tier 1 |
| ServiceLocator | 11 | Tier 2 |
| UsingInsideNamespace | 27 | Tier 0 |
| UsingNotSorted | 42 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/AdvisoryAi/AdvisoryAiRemoteInferenceEndpointTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/AdvisoryAi/AuthorityAdvisoryAiConsentEvaluatorTests.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Airgap/AirgapAuditEndpointsTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Airgap/AuthoritySealedModeEvidenceValidatorTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Audit/AuthorityAuditSinkTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Auth/AuthorityAuthBypassTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Bootstrap/BootstrapInviteCleanupServiceTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Bootstrap/ServiceAccountAdminEndpointsTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Console/ConsoleEndpointsTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Contract/AuthorityContractSnapshotTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Errors/KeyErrorClassificationTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Identity/AuthorityIdentityProviderRegistryTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Infrastructure/AuthorityWebApplicationFactory.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Infrastructure/TestAirgapAuditStore.cs | UsingNotSorted | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Infrastructure/TestAuthHandler.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/LocalPolicy/FallbackPolicyStoreIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Convert to file-scoped namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/LocalPolicy/FileBasedPolicyStoreTests.cs | UsingNotSorted | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Negative/AuthorityNegativeTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Notifications/AuthorityAckTokenIssuerTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Notifications/AuthorityAckTokenKeyManagerTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Notifications/AuthorityWebhookAllowlistEvaluatorTests.cs | UsingNotSorted | Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Notifications/NotifyAckTokenRotationEndpointTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Observability/AuthorityOTelTraceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenApi/OpenApiDiscoveryEndpointTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/ClientCredentialsAndTokenHandlersTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/DiscoveryMetadataTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/LegacyAuthDeprecationTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/PasswordGrantHandlersTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/TokenPersistenceIntegrationTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Permalinks/VulnPermalinkServiceTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Plugins/AuthorityPluginLoaderTests.cs | UsingNotSorted | Remove service locator usage; use constructor injection.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/RateLimiting/AuthorityRateLimiterIntegrationTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/RateLimiting/AuthorityRateLimiterMetadataMiddlewareTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/RateLimiting/AuthorityRateLimiterTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Signing/AuthorityJwksServiceTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Signing/AuthoritySigningKeyManagerTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Signing/KmsAuthoritySigningKeySourceTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Signing/TokenSignVerifyRoundtripTests.cs | UsingInsideNamespace; UsingNotSorted | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Storage/PostgresAdapterTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/TestEnvironment.cs | UsingNotSorted | Add file-scoped namespace: namespace StellaOps.<Area>;; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Vulnerability/VulnTokenIssuerTests.cs | UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Vulnerability/VulnWorkflowTokenEndpointTests.cs | UsingInsideNamespace; UsingNotSorted | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/AdvisoryAi/AdvisoryAiRemoteInferenceEndpointTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/AdvisoryAi/AuthorityAdvisoryAiConsentEvaluatorTests.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Airgap/AirgapAuditEndpointsTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Airgap/AuthoritySealedModeEvidenceValidatorTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Audit/AuthorityAuditSinkTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Auth/AuthorityAuthBypassTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Bootstrap/BootstrapInviteCleanupServiceTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Bootstrap/ServiceAccountAdminEndpointsTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Console/ConsoleEndpointsTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Contract/AuthorityContractSnapshotTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Identity/AuthorityIdentityProviderRegistryTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Infrastructure/AuthorityWebApplicationFactory.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Infrastructure/EnvironmentVariableScope.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Infrastructure/TestAirgapAuditStore.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/LocalPolicy/FallbackPolicyStoreIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing; NamespaceNotFileScoped | Add ConfigureAwait(false) to awaited calls in library-like code.; Convert to file-scoped namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Negative/AuthorityNegativeTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Notifications/AuthorityAckTokenIssuerTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Notifications/NotifyAckTokenRotationEndpointTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Observability/AuthorityOTelTraceTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenApi/OpenApiDiscoveryEndpointTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/ClientCredentialsAndTokenHandlersTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/DiscoveryMetadataTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/LegacyAuthDeprecationTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/PasswordGrantHandlersTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/TokenPersistenceIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Permalinks/VulnPermalinkServiceTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Plugins/AuthorityPluginLoaderTests.cs | PrivateFieldNaming | Remove service locator usage; use constructor injection.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/RateLimiting/AuthorityRateLimiterIntegrationTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/RateLimiting/AuthorityRateLimiterMetadataMiddlewareTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/RateLimiting/AuthorityRateLimiterTests.cs | AsyncNaming; ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Signing/AuthorityJwksServiceTests.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Storage/PostgresAdapterTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Vulnerability/VulnTokenIssuerTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Vulnerability/VulnWorkflowTokenEndpointTests.cs | AsyncNaming; ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/AdvisoryAi/AdvisoryAiRemoteInferenceEndpointTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/AdvisoryAi/AuthorityAdvisoryAiConsentEvaluatorTests.cs | FileLength>100 | Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Airgap/AirgapAuditEndpointsTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Airgap/AuthoritySealedModeEvidenceValidatorTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Audit/AuthorityAuditSinkTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Auth/AuthorityAuthBypassTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Bootstrap/BootstrapInviteCleanupServiceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Bootstrap/ServiceAccountAdminEndpointsTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Console/ConsoleEndpointsTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Contract/AuthorityContractSnapshotTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Errors/KeyErrorClassificationTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Identity/AuthorityIdentityProviderRegistryTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Identity/AuthorityIdentityProviderSelectorTests.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Infrastructure/AuthorityWebApplicationFactory.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/LocalPolicy/FallbackPolicyStoreIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Convert to file-scoped namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/LocalPolicy/FileBasedPolicyStoreTests.cs | FileLength>100 | Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Negative/AuthorityNegativeTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Notifications/AuthorityAckTokenIssuerTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Notifications/AuthorityAckTokenKeyManagerTests.cs | FileLength>100; ServiceLocator | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Notifications/NotifyAckTokenRotationEndpointTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Observability/AuthorityOTelTraceTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/ClientCredentialsAndTokenHandlersTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/LegacyAuthDeprecationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/OpenIddict/PasswordGrantHandlersTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Permalinks/VulnPermalinkServiceTests.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Plugins/AuthorityPluginLoaderTests.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/RateLimiting/AuthorityRateLimiterIntegrationTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/RateLimiting/AuthorityRateLimiterMetadataMiddlewareTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Signing/AuthorityJwksServiceTests.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Signing/AuthoritySigningKeyManagerTests.cs | FileLength>100; ServiceLocator | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Signing/TokenSignVerifyRoundtripTests.cs | FileLength>100 | Move using directives outside namespace.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Storage/PostgresAdapterTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/TestEnvironment.cs | NamespaceMissing | Add file-scoped namespace: namespace StellaOps.<Area>;; Sort using directives alphabetically. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Vulnerability/VulnTokenIssuerTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Vulnerability/VulnWorkflowTokenEndpointTests.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): unknown
- Detected test projects: none
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/TestEnvironment.cs | Consider interface-backed abstraction if alternate implementations are needed. |

View File

@@ -0,0 +1,204 @@
# Remediation Checklist - StellaOps.Authority
## Scope
- Project: src/Authority/StellaOps.Authority/StellaOps.Authority/StellaOps.Authority.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/StellaOps.Authority/StellaOps.Authority/StellaOps.Authority.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/StellaOps.Authority/StellaOps.Authority
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 112
- Files with issues: 76
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 35 | Tier 1 |
| BlockingAsync | 2 | Tier 2 |
| ConfigureAwaitMissing | 1 | Tier 1 |
| FileLength>100 | 62 | Tier 2 |
| NamespaceMissing | 1 | Tier 2 |
| PrivateFieldNaming | 59 | Tier 1 |
| ServiceLocator | 4 | Tier 2 |
| UsingInsideNamespace | 17 | Tier 0 |
| UsingNotSorted | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Airgap/AuthoritySealedModeEvidenceValidator.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Audit/AuthorityAuditSink.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/AuthorityIdentityProviderRegistry.cs | UsingInsideNamespace | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Console/ConsoleWorkspaceSampleService.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/Ack/AckTokenPayload.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/Ack/AckTokenSigningUtilities.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenApi/AuthorityOpenApiDocumentProvider.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/ClientCredentialsHandlers.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/DpopHandlers.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/PasswordGrantHandlers.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/RevocationHandlers.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/TokenPersistenceHandlers.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/TokenValidationHandlers.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Permalinks/VulnPermalinkService.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Program.cs | UsingNotSorted | Remove service locator usage; use constructor injection.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/FileAuthoritySigningKeySource.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/VulnTokenVerificationUtilities.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/Workflow/VulnWorkflowAntiForgeryTokenIssuer.cs | UsingInsideNamespace | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority/AdvisoryAi/AuthorityAdvisoryAiConsentEvaluator.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Airgap/AirgapAuditEndpointExtensions.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Airgap/AuthorityAirgapAuditService.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Airgap/AuthoritySealedModeEvidenceValidator.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Audit/AuthorityAuditSink.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Audit/AuthorityCredentialAuditContextAccessor.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/AuthorityIdentityProviderRegistry.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/AuthorityRateLimiter.cs | ConfigureAwaitMissing; PrivateFieldNaming | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Bootstrap/BootstrapApiKeyFilter.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Bootstrap/BootstrapInviteCleanupService.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Console/Admin/ConsoleAdminEndpointExtensions.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Console/Admin/ConsoleBrandingEndpointExtensions.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Console/ConsoleEndpointExtensions.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Console/ConsoleWorkspaceSampleService.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/LegacyAuthDeprecationMiddleware.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/LocalPolicy/FileBasedPolicyStore.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/LocalPolicy/PolicyStoreFallback.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/Ack/AckTokenPayload.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/Ack/AckTokenSigningUtilities.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/Ack/AuthorityAckTokenIssuer.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/Ack/AuthorityAckTokenKeyManager.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/Ack/AuthorityAckTokenVerifier.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/AuthorityWebhookAllowlistEvaluator.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenApi/AuthorityOpenApiDocumentProvider.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenApi/OpenApiDiscoveryEndpointExtensions.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/ClientCredentialsHandlers.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/DiscoveryHandlers.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/DpopHandlers.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/PasswordGrantHandlers.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/RefreshTokenHandlers.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/RevocationHandlers.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/TokenPersistenceHandlers.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/TokenValidationHandlers.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/TokenRequestTamperInspector.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Permalinks/VulnPermalinkService.cs | AsyncNaming; PrivateFieldNaming | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Plugins/AuthorityPluginLoader.cs | PrivateFieldNaming | Remove service locator usage; use constructor injection.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/RateLimiting/AuthorityRateLimiterMetadata.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/RateLimiting/AuthorityRateLimiterMetadataAccessor.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/RateLimiting/AuthorityRateLimiterMetadataMiddleware.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Revocation/AuthorityRevocationExportService.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Revocation/RevocationBundleBuilder.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Revocation/RevocationBundleSigner.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Security/AuthorityClientCertificateValidator.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Security/AuthoritySecretHasherInitializer.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/AuthorityDsseStatementSigner.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/AuthorityJwksService.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/AuthoritySignerAdapter.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/AuthoritySigningKeyManager.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/FileAuthoritySigningKeySource.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresAirgapAuditStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresBootstrapInviteStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresClientStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresLoginAttemptStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresRevocationExportStateStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresRevocationStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresServiceAccountStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresTokenStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Tenants/AuthorityTenantCatalog.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/Attachments/VulnAttachmentTokenIssuer.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/Attachments/VulnAttachmentTokenVerifier.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/VulnTokenSigner.cs | PrivateFieldNaming | Rename private fields to _camelCase. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/VulnTokenVerificationUtilities.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/Workflow/VulnWorkflowAntiForgeryTokenIssuer.cs | PrivateFieldNaming | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/Workflow/VulnWorkflowAntiForgeryTokenVerifier.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority/AdvisoryAi/AuthorityAdvisoryAiConsentEvaluator.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Airgap/AirgapAuditEndpointExtensions.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Airgap/AuthorityAirgapAuditService.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Airgap/AuthoritySealedModeEvidenceValidator.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Audit/AuthorityAuditSink.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/AuthorityIdentityProviderRegistry.cs | FileLength>100; ServiceLocator | Move using directives outside namespace.; Remove service locator usage; use constructor injection.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/AuthorityRateLimiter.cs | FileLength>100; ServiceLocator | Add ConfigureAwait(false) to awaited calls in library-like code.; Remove service locator usage; use constructor injection.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Bootstrap/BootstrapInviteCleanupService.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Console/Admin/ConsoleAdminEndpointExtensions.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Console/Admin/ConsoleBrandingEndpointExtensions.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Console/ConsoleEndpointExtensions.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Console/ConsoleWorkspaceModels.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Console/ConsoleWorkspaceSampleService.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/LegacyAuthDeprecationMiddleware.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/LocalPolicy/BreakGlassSessionManager.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/LocalPolicy/FileBasedPolicyStore.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/LocalPolicy/ILocalPolicyStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/LocalPolicy/LocalPolicyModels.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/LocalPolicy/LocalPolicyStoreOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/LocalPolicy/PolicyStoreFallback.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/Ack/AckTokenPayload.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/Ack/AuthorityAckTokenIssuer.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/Ack/AuthorityAckTokenKeyManager.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/Ack/AuthorityAckTokenVerifier.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Notifications/AuthorityWebhookAllowlistEvaluator.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Observability/IncidentAuditEndpointExtensions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenApi/AuthorityOpenApiDocumentProvider.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenApi/OpenApiDiscoveryEndpointExtensions.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/AuthoritySenderConstraintHelper.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/ClientCredentialsAuditHelper.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/ClientCredentialsHandlers.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/DpopHandlers.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/PasswordGrantHandlers.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/RefreshTokenHandlers.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/RevocationHandlers.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/TokenPersistenceHandlers.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/Handlers/TokenValidationHandlers.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/OpenIddict/TokenRequestTamperInspector.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Permalinks/VulnPermalinkService.cs | FileLength>100 | Move using directives outside namespace.; Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Plugins/AuthorityPluginLoader.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Program.Partial.cs | NamespaceMissing | Add file-scoped namespace: namespace StellaOps.<Area>; |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Program.cs | FileLength>100; ServiceLocator | Remove service locator usage; use constructor injection.; Sort using directives alphabetically.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/RateLimiting/AuthorityRateLimiterMetadataAccessor.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/RateLimiting/AuthorityRateLimiterMetadataMiddleware.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Revocation/RevocationBundleBuilder.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Revocation/RevocationBundleSigner.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Security/AuthorityClientCertificateValidator.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/AuthorityDsseStatementSigner.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/AuthorityJwksService.cs | BlockingAsync; FileLength>100 | Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/AuthoritySigningKeyManager.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/FileAuthoritySigningKeySource.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/KmsAuthoritySigningKeySource.cs | BlockingAsync; FileLength>100 | Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresAirgapAuditStore.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresBootstrapInviteStore.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresClientStore.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresLoginAttemptStore.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Storage/Postgres/PostgresTokenStore.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/Attachments/VulnAttachmentTokenIssuer.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/Attachments/VulnAttachmentTokenVerifier.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/VulnTokenUtilities.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/VulnTokenVerificationUtilities.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/Workflow/VulnWorkflowAntiForgeryTokenIssuer.cs | FileLength>100 | Move using directives outside namespace.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Vulnerability/Workflow/VulnWorkflowAntiForgeryTokenVerifier.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Unit
- Detected test projects: src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/StellaOps.Authority.Tests.csproj [Security]
- Missing layers: Unit
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/StellaOps.Authority/StellaOps.Authority/AuthorityHttpHeaders.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/AuthorityRateLimiter.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/AuthorityTelemetryConfiguration.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/LegacyAuthDeprecationMiddleware.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity.; Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/Program.cs | Extract helpers to reduce file size and complexity. |
| src/Authority/StellaOps.Authority/StellaOps.Authority/ServiceAccountAdminContracts.cs | Split types into separate files grouped by responsibility. |

View File

@@ -0,0 +1,58 @@
# Remediation Checklist - StellaOps.Authority.Core
## Scope
- Project: src/Authority/__Libraries/StellaOps.Authority.Core/StellaOps.Authority.Core.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/__Libraries/StellaOps.Authority.Core/StellaOps.Authority.Core.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/__Libraries/StellaOps.Authority.Core
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 6
- Files with issues: 5
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 1 | Tier 1 |
| BlockingAsync | 1 | Tier 2 |
| FileLength>100 | 5 | Tier 2 |
| PrivateFieldNaming | 1 | Tier 1 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/__Libraries/StellaOps.Authority.Core/Verdicts/VerdictManifest.cs | PrivateFieldNaming | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Core/Verdicts/VerdictReplayVerifier.cs | AsyncNaming | Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/__Libraries/StellaOps.Authority.Core/Verdicts/IVerdictManifestStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Core/Verdicts/InMemoryVerdictManifestStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Core/Verdicts/VerdictManifest.cs | FileLength>100 | Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Core/Verdicts/VerdictManifestBuilder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Core/Verdicts/VerdictReplayVerifier.cs | BlockingAsync; FileLength>100 | Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Authority/__Tests/StellaOps.Authority.Core.Tests/StellaOps.Authority.Core.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.
## Remediation Updates
- 2026-02-04: Split verdict manifest, builder, replay verifier, and in-memory store types into <=100-line files; moved pagination and comparison helpers into partials.
- 2026-02-04: Renamed private serializer field to `_options` to meet private-field naming rules.
- 2026-02-04: Expanded unit coverage for manifest serializer empty JSON handling, replay difference detection, and asset pagination.
- 2026-02-04: `dotnet test src/Authority/__Tests/StellaOps.Authority.Core.Tests/StellaOps.Authority.Core.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (46 tests).

View File

@@ -0,0 +1,88 @@
# Remediation Checklist - StellaOps.Authority.Persistence
## Scope
- Project: src/Authority/__Libraries/StellaOps.Authority.Persistence/StellaOps.Authority.Persistence.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/__Libraries/StellaOps.Authority.Persistence/StellaOps.Authority.Persistence.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/__Libraries/StellaOps.Authority.Persistence
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 65
- Files with issues: 26
| Issue | Count | Tier |
| --- | --- | --- |
| AsyncNaming | 20 | Tier 1 |
| BlockingAsync | 2 | Tier 2 |
| FileLength>100 | 20 | Tier 2 |
| PrivateFieldNaming | 9 | Tier 1 |
| ServiceLocator | 2 | Tier 2 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
- No Tier 0 issues detected in file-audit.csv.
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/InMemory/Stores/InMemoryStores.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/AirgapAuditRepository.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/ApiKeyRepository.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/AuditRepository.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/BootstrapInviteRepository.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/ClientRepository.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/LoginAttemptRepository.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/OfflineKitAuditEmitter.cs | AsyncNaming | Rename async methods to end with Async. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/OfflineKitAuditRepository.cs | AsyncNaming | Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/OidcTokenRepository.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/PermissionRepository.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/RevocationExportStateRepository.cs | AsyncNaming | Rename async methods to end with Async. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/RevocationRepository.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/RoleRepository.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/ServiceAccountRepository.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/SessionRepository.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/TenantRepository.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/TokenRepository.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/UserRepository.cs | AsyncNaming | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/VerdictManifestStore.cs | AsyncNaming; PrivateFieldNaming | Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/InMemory/Documents/AuthorityDocuments.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/InMemory/Driver/InMemoryDriverShim.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/InMemory/Extensions/ServiceCollectionExtensions.cs | ServiceLocator | Remove service locator usage; use constructor injection. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/InMemory/Stores/IAuthorityStores.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/InMemory/Stores/InMemoryStores.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Models/UserEntity.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/ApiKeyRepository.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/AuditRepository.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/BootstrapInviteRepository.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/ClientRepository.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/OfflineKitAuditRepository.cs | BlockingAsync; FileLength>100 | Rename async methods to end with Async.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/OidcTokenRepository.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/PermissionRepository.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/RevocationRepository.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/RoleRepository.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/ServiceAccountRepository.cs | FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/SessionRepository.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/TenantRepository.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/TokenRepository.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/Repositories/UserRepository.cs | FileLength>100 | Rename async methods to end with Async.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/ServiceCollectionExtensions.cs | ServiceLocator | Remove service locator usage; use constructor injection. |
| src/Authority/__Libraries/StellaOps.Authority.Persistence/Postgres/VerdictManifestStore.cs | BlockingAsync; FileLength>100 | Rename async methods to end with Async.; Rename private fields to _camelCase.; Replace .Result/.Wait/GetAwaiter().GetResult() with await.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: FAIL
- Expected layers (heuristic): Integration, Unit
- Detected test projects: src/Authority/__Tests/StellaOps.Authority.Persistence.Tests/StellaOps.Authority.Persistence.Tests.csproj [Security]; src/Authority/StellaOps.Authority/StellaOps.Authority.Plugin.Ldap.Tests/StellaOps.Authority.Plugin.Ldap.Tests.csproj [Security]; src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/StellaOps.Authority.Tests.csproj [Security]; src/Scanner/__Tests/StellaOps.Scanner.WebService.Tests/StellaOps.Scanner.WebService.Tests.csproj [Unit]
- Missing layers: Integration
- Fix guidance: Add or expand test projects to cover missing layers.; Ensure tests use deterministic fixtures and offline harnesses.
## SOLID Refactor Guidance (from solid-review)
- No SOLID refactor recommendations recorded.

View File

@@ -0,0 +1,62 @@
# Remediation Checklist - StellaOps.Authority.Timestamping.Abstractions
## Scope
- Project: src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/StellaOps.Authority.Timestamping.Abstractions.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/StellaOps.Authority.Timestamping.Abstractions.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 7
- Files with issues: 5
| Issue | Count | Tier |
| --- | --- | --- |
| FileLength>100 | 5 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TimeStampRequest.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
- No Tier 1 issues detected in file-audit.csv.
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TimeStampRequest.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TimeStampResponse.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TimeStampToken.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TimeStampVerificationResult.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TsaClientOptions.cs | FileLength>100 | Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Authority/__Tests/StellaOps.Authority.Timestamping.Abstractions.Tests/StellaOps.Authority.Timestamping.Abstractions.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/ITimeStampAuthorityClient.cs | Split types into separate files grouped by responsibility. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TimeStampRequest.cs | Split types into separate files grouped by responsibility. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TimeStampResponse.cs | Split types into separate files grouped by responsibility. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TimeStampToken.cs | Split types into separate files grouped by responsibility. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TimeStampVerificationResult.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TsaClientOptions.cs | Split types into separate files grouped by responsibility. |
## Remediation Updates
- 2026-02-04: Split timestamp request/response/token/verification models into dedicated files (extensions, TSTInfo, accuracy, PKI status/flags, verification enums, provider options, failover strategy) to keep each file <= 100 lines.
- 2026-02-04: Fixed `TimeStampRequest` nonce handling to preserve `null` when `includeNonce` is false.
- 2026-02-04: Added unit coverage in `src/Authority/__Tests/StellaOps.Authority.Timestamping.Abstractions.Tests` for request factories, token digest, accuracy/time range, response helpers, verification mapping, and options defaults.
- 2026-02-04: `dotnet test src/Authority/__Tests/StellaOps.Authority.Timestamping.Abstractions.Tests/StellaOps.Authority.Timestamping.Abstractions.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (16 tests).

View File

@@ -0,0 +1,69 @@
# Remediation Checklist - StellaOps.Authority.Timestamping
## Scope
- Project: src/Authority/__Libraries/StellaOps.Authority.Timestamping/StellaOps.Authority.Timestamping.csproj
- Module: Authority
- Audit detail: docs/implplan/audits/csproj-standards/src/Authority/__Libraries/StellaOps.Authority.Timestamping/StellaOps.Authority.Timestamping.md
- SOLID review: docs/implplan/audits/csproj-standards/solid-review/src/Authority/__Libraries/StellaOps.Authority.Timestamping
- Generated (UTC): 2026-01-31
## Issue Summary
- Files scanned: 9
- Files with issues: 8
| Issue | Count | Tier |
| --- | --- | --- |
| ConfigureAwaitMissing | 2 | Tier 1 |
| FileLength>100 | 8 | Tier 2 |
| UsingInsideNamespace | 1 | Tier 0 |
## Tier 0 Remediation (Safe Automation)
- Notes: Using directives inside conditional preprocessor blocks require manual review; UsingInsideNamespace moves only when a single namespace is present.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/Asn1/TimeStampReqEncoder.cs | UsingInsideNamespace | Move using directives outside namespace.; Split file to stay <= 100 lines. |
## Tier 1 Remediation (Reviewed Automation)
- Notes: Symbol-aware renames required; ConfigureAwait(false) applies to library-like code only.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/HttpTsaClient.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/TsaProviderRegistry.cs | ConfigureAwaitMissing | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
## Tier 2 Remediation (Manual)
- Notes: Service locator and Assembly.LoadFrom fixes require module-specific design decisions.
| File | Issues | Fix guidance |
| --- | --- | --- |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/Asn1/TimeStampReqEncoder.cs | FileLength>100 | Move using directives outside namespace.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/Asn1/TimeStampRespDecoder.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/Caching/InMemoryTsaCacheStore.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/HttpTsaClient.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/ITsaProviderRegistry.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/TimeStampTokenVerifier.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/TimestampingServiceCollectionExtensions.cs | FileLength>100 | Split file to stay <= 100 lines. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/TsaProviderRegistry.cs | FileLength>100 | Add ConfigureAwait(false) to awaited calls in library-like code.; Split file to stay <= 100 lines. |
## Testing Coverage Guidance
- Status: PASS
- Expected layers (heuristic): Unit
- Detected test projects: src/Authority/__Tests/StellaOps.Authority.Timestamping.Tests/StellaOps.Authority.Timestamping.Tests.csproj [Unit]
- Missing layers: none
- Fix guidance: Add missing test layers per docs/technical/testing/TEST_COVERAGE_MATRIX.md.
## SOLID Refactor Guidance (from solid-review)
| File | Recommendations |
| --- | --- |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/HttpTsaClient.cs | Extract helpers to reduce file size and complexity. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/ITsaProviderRegistry.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/TimeStampTokenVerifier.cs | Extract helpers to reduce file size and complexity. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/TimestampingServiceCollectionExtensions.cs | Consider interface-backed abstraction if alternate implementations are needed. |
| src/Authority/__Libraries/StellaOps.Authority.Timestamping/TsaProviderRegistry.cs | Split types into separate files grouped by responsibility.; Extract helpers to reduce file size and complexity. |
## Remediation Updates
- 2026-02-04: Split HttpTsaClient, TimeStampTokenVerifier, TsaProviderRegistry, ITsaProviderRegistry types, and TimestampingServiceCollectionExtensions into partials to keep files <= 100 lines; moved ASN.1 encoders/decoders and cache store helpers into dedicated files.
- 2026-02-04: Added ConfigureAwait(false) on library awaits in HttpTsaClient and TsaProviderRegistry health checks.
- 2026-02-04: Added unit coverage in `src/Authority/__Tests/StellaOps.Authority.Timestamping.Tests` for request encoding, response decoding, provider registry ordering/health, cache store stats, and token verifier early failure paths.
- 2026-02-04: `dotnet test src/Authority/__Tests/StellaOps.Authority.Timestamping.Tests/StellaOps.Authority.Timestamping.Tests.csproj -p:BuildInParallel=false -p:UseSharedCompilation=false` passed (10 tests).

Some files were not shown because too many files have changed in this diff Show More