3.3 KiB
3.3 KiB
Runtime Purity Enforcement
Module
__Libraries
Status
VERIFIED
Description
Runtime purity enforcement beyond static analysis, ensuring deterministic evaluation by blocking ambient state access (system clock, network, filesystem, environment variables) during pure computation phases. Provides PureEvaluationContext with prohibited accessors that throw AmbientAccessViolationException, and injected replacements for deterministic test and evaluation scenarios.
Implementation Details
- PureEvaluationContext:
src/__Libraries/StellaOps.Resolver/Purity/RuntimePurity.cs--CreateStrict()returns context with all prohibited accessors (no time, no network, no filesystem, no environment);Create(injectedNow, envVars)returns context with injected deterministic providers for time and environment; holdsTimeProvider,INetworkAccessor,IFileSystemAccessor,IEnvironmentAccessorproperties - AmbientAccessViolationException:
src/__Libraries/StellaOps.Resolver/Purity/RuntimePurity.cs-- thrown by prohibited accessors when ambient state access is attempted during pure evaluation; carriesAccessTypestring describing which ambient access was blocked - ProhibitedTimeProvider:
src/__Libraries/StellaOps.Resolver/Purity/RuntimePurity.cs--TimeProvidersubclass;GetUtcNow()andGetLocalNow()throwAmbientAccessViolationException("TimeProvider") - ProhibitedNetworkAccessor:
src/__Libraries/StellaOps.Resolver/Purity/RuntimePurity.cs--INetworkAccessorimplementation; all methods throwAmbientAccessViolationException("NetworkAccessor") - ProhibitedFileSystemAccessor:
src/__Libraries/StellaOps.Resolver/Purity/RuntimePurity.cs--IFileSystemAccessorimplementation; all methods throwAmbientAccessViolationException("FileSystemAccessor") - ProhibitedEnvironmentAccessor:
src/__Libraries/StellaOps.Resolver/Purity/RuntimePurity.cs--IEnvironmentAccessorimplementation;GetEnvironmentVariable(name)throwsAmbientAccessViolationException("EnvironmentAccessor") - InjectedTimeProvider:
src/__Libraries/StellaOps.Resolver/Purity/RuntimePurity.cs--TimeProvidersubclass;GetUtcNow()returns fixedDateTimeOffsetset at construction; deterministic time for evaluation - InjectedEnvironmentAccessor:
src/__Libraries/StellaOps.Resolver/Purity/RuntimePurity.cs--IEnvironmentAccessorimplementation; returns values from injectedIReadOnlyDictionary<string, string>instead of real environment - Source: Feature matrix scan
E2E Test Plan
- Verify PureEvaluationContext.CreateStrict() blocks time access with AmbientAccessViolationException
- Test ProhibitedNetworkAccessor throws on any network access during pure evaluation
- Verify ProhibitedFileSystemAccessor throws on file read/write during pure evaluation
- Test ProhibitedEnvironmentAccessor throws on environment variable access
- Verify PureEvaluationContext.Create(injectedNow, envVars) allows deterministic time access
- Test InjectedTimeProvider returns fixed time value consistently
- Verify InjectedEnvironmentAccessor returns injected values, not real environment
- Test DeterministicResolver uses PureEvaluationContext for its EvaluatePure phase
Verification
- Verified: 2026-02-13T20:30:00Z
- Run: run-001
- Tier: Tier 2d (Library/Internal)
- Verdict: PASS