# Roslyn Analyzer for Canonicalization Enforcement (STELLA0100) ## Module __Analyzers ## Status VERIFIED ## Description Custom Roslyn static analyzer (diagnostic STELLA0100) that enforces canonicalization boundaries at compile time. Detects code paths that cross resolver boundaries without proper canonicalization, preventing non-deterministic serialization from leaking into deterministic evaluation pipelines. ## Implementation Details - **Canonicalization Boundary Analyzer**: `src/__Analyzers/StellaOps.Determinism.Analyzers/CanonicalizationBoundaryAnalyzer.cs` -- Roslyn `DiagnosticAnalyzer` that reports `STELLA0100` (and companion diagnostics) for boundary serialization violations. - **Analyzer Tests**: `src/__Analyzers/StellaOps.Determinism.Analyzers.Tests/CanonicalizationBoundaryAnalyzerTests.cs` -- unit tests for positive and negative analyzer paths. ## E2E Test Plan - [x] Verify STELLA0100 is reported when canonicalization boundary rules are violated - [x] Verify no diagnostics are emitted for correctly guarded canonical serializer usage - [x] Verify analyzer integrates in `dotnet build`/test workflow - [x] Verify analyzer avoids false positives in non-boundary scenarios ## Verification - **Verified**: 2026-02-11 - **Method**: Tier 0 source verification + Tier 1 build/test + Tier 2d analyzer behavior replay - **Build**: PASS (`src/__Analyzers/StellaOps.Determinism.Analyzers/StellaOps.Determinism.Analyzers.csproj`) - **Tests**: PASS (`src/__Analyzers/StellaOps.Determinism.Analyzers.Tests/StellaOps.Determinism.Analyzers.Tests.csproj`: 8/8) - **Tier 0 Evidence**: `docs/qa/feature-checks/runs/analyzers/roslyn-analyzer-for-canonicalization-enforcement/run-001/tier0-source-check.json` - **Tier 1 Evidence**: `docs/qa/feature-checks/runs/analyzers/roslyn-analyzer-for-canonicalization-enforcement/run-001/tier1-build-check.json` - **Tier 2 Evidence**: `docs/qa/feature-checks/runs/analyzers/roslyn-analyzer-for-canonicalization-enforcement/run-001/tier2-integration-check.json` ## Recheck (Run-002) - **Rechecked**: 2026-02-11 - **Method**: Tier 0 source verification + Tier 1 build/test + strict Tier 2 command-line behavior replay - **Build**: PASS (`src/__Analyzers/StellaOps.Determinism.Analyzers/StellaOps.Determinism.Analyzers.csproj`) - **Tests**: PASS (`src/__Analyzers/StellaOps.Determinism.Analyzers.Tests/StellaOps.Determinism.Analyzers.Tests.csproj`: 8/8) - **Tier 2 Behavior**: - Positive path: `dotnet build` for a violating sample emits `STELLA0100`. - Negative path: `dotnet build` for a compliant sample emits no `STELLA0100`. - **Tier 0 Evidence**: `docs/qa/feature-checks/runs/analyzers/roslyn-analyzer-for-canonicalization-enforcement/run-002/tier0-source-check.json` - **Tier 1 Evidence**: `docs/qa/feature-checks/runs/analyzers/roslyn-analyzer-for-canonicalization-enforcement/run-002/tier1-build-check.json` - **Tier 2 Evidence**: `docs/qa/feature-checks/runs/analyzers/roslyn-analyzer-for-canonicalization-enforcement/run-002/tier2-integration-check.json`