Skip to main content

Module resolver

Module resolver 

Source
Expand description

The resolver — orchestrates URN → data over the §5.3 node-first ladder.

§Three outcomes, deliberately kept distinct

A resolve returns Result<ResolveOutcome, ResolveError>:

  • ResolveOutcome::Success — verified, decrypted content (node path: server-side decrypted under loopback trust; rpc path: client-verified against the chain-anchored root then decrypted).
  • ResolveOutcome::IntegrityFailure — bytes WERE fetched but failed the merkle inclusion / decrypt-verify (tampered / decoy / wrong root). A hard, fail-CLOSED SECURITY outcome: the unverified bytes are discarded and NEVER returned.
  • ResolveOutcome::Unreachable — every transport tier was down; nothing was fetched. A friendly, retryable network condition.

IntegrityFailure (reached the network, bytes don’t verify — security) and Unreachable (couldn’t reach the network — retryable) are never conflated.

A malformed URN, a not-found resource, and a reachable rpc PROTOCOL error remain hard ResolveErrors.

Structs§

ResolveOptions
Options for a resolve. All optional; defaults follow §5.3.
ResolvedData
The resolved bytes plus their content type. Only ever the VERIFIED content of a ResolveOutcome::Success, or the branded HTML of a rendered non-success outcome (see ResolveOutcome::render).
Resolver
A URN resolver over an injected HttpTransport. The ladder plan and verified results are cached per instance.

Enums§

ResolveOutcome
The typed result of a resolve. The three cases are exhaustive and never conflated (see the module docs).