Files
git.stella-ops.org/docs/features/checked/libraries/unified-deterministic-resolver.md

36 lines
3.2 KiB
Markdown

# Unified Deterministic Resolver (DeterministicResolver)
## Module
__Libraries
## Status
ARCHIVED (2026-03-04) — Zero production consumers. Source preserved at `src/__Libraries/_archived/StellaOps.Resolver/`.
## Description
Full deterministic resolver with 4-phase resolution (validate, order, evaluate, digest), immutable evidence graph with content-addressed GraphDigest, Tarjan's SCC cycle detection, implicit data detection, and integration with trust lattice engine. Guarantees pure evaluation with no IO in the compute phase.
## Implementation Details
- **DeterministicResolver**: `src/__Libraries/_archived/StellaOps.Resolver/DeterministicResolver.cs` -- `ResolveAsync(graph, evaluator, context)` orchestrates 4-phase resolution: Phase 1 `Validate(graph)` runs cycle detection and implicit data detection; Phase 2 `OrderNodes(graph)` produces deterministic topological ordering; Phase 3 `EvaluatePure(orderedNodes, evaluator, context)` evaluates each node with predecessor verdicts (no IO); Phase 4 computes final resolution digest from all node verdicts; uses `PureEvaluationContext` to enforce runtime purity
- **EvidenceGraph**: `src/__Libraries/_archived/StellaOps.Resolver/EvidenceGraph.cs` -- immutable record with sorted `Nodes` (IReadOnlyList<EvidenceNode>) and `Edges` (IReadOnlyList<EvidenceEdge>); `GraphDigest` (content-addressed via `CanonicalJsonSerializer.SerializeWithDigest`); `AddNode(node)` and `AddEdge(edge)` return new immutable instances; nodes and edges sorted for deterministic digest
- **GraphValidation**: `src/__Libraries/_archived/StellaOps.Resolver/GraphValidation.cs` -- `DefaultGraphValidator` combining `TarjanCycleDetector` (Tarjan's SCC algorithm with `IsCycleCut` edge exclusion) and `DefaultImplicitDataDetector` (detects dangling edges, duplicate IDs); `TarjanCycleDetector` uses index/lowlink tracking, stack-based DFS, reports strongly connected components with >1 node as cycles
- **RuntimePurity**: `src/__Libraries/_archived/StellaOps.Resolver/Purity/RuntimePurity.cs` -- `PureEvaluationContext` with `CreateStrict()` (all prohibited accessors) and `Create(injectedNow, envVars)` (deterministic providers); `ProhibitedTimeProvider`, `ProhibitedNetworkAccessor`, `ProhibitedFileSystemAccessor`, `ProhibitedEnvironmentAccessor` all throw `AmbientAccessViolationException`; `InjectedTimeProvider` and `InjectedEnvironmentAccessor` for deterministic evaluation
- **Source**: Feature matrix scan
## E2E Test Plan
- [ ] Verify DeterministicResolver.ResolveAsync produces deterministic results for same graph
- [ ] Test Phase 1: Validate detects cycles via Tarjan's SCC and reports them
- [ ] Verify Phase 2: OrderNodes produces stable topological ordering
- [ ] Test Phase 3: EvaluatePure runs without IO access (PureEvaluationContext enforced)
- [ ] Verify Phase 4: final resolution digest is content-addressed and deterministic
- [ ] Test EvidenceGraph is immutable (AddNode/AddEdge return new instances)
- [ ] Verify GraphDigest changes when any node or edge changes
- [ ] Test DefaultImplicitDataDetector catches dangling edges and duplicate node IDs
## Verification
- **Verified**: 2026-02-13T20:30:00Z
- **Run**: run-001
- **Tier**: Tier 2d (Library/Internal)
- **Verdict**: PASS