Skip to content

Appendix I: Deterministic Resolution and Processing Profiles

This appendix provides non-normative algorithm sketches that illustrate deterministic processing. Implementations will vary, but outcomes must be reproducible.

I.1 As-Sent Version Resolution (Conceptual)

Inputs: messageTimestamp, linkReference

1) Resolve linkReference to underlying object using canonicalization + platform APIs

2) Enumerate object versions with (versionId, lastModifiedDateTime)

3) CandidateVersions = { v | v.lastModifiedDateTime <= messageTimestamp }

4) If CandidateVersions is empty:

Record fallback rule; emit exception or select earliest available per policy

Else:

Select v* = argmax(CandidateVersions.lastModifiedDateTime)

If ties on timestamp: select highest versionId per deterministic ordering

5) Preserve bytes(v), metadata(v), versionId(v*)

6) Persist binding: (messageId -> link -> objectId -> versionId) with provenance

I.2 Exception and Retry Handling (Conceptual)

When a linked object cannot be collected:

  • Create ExceptionRecord { originalReference, resolvedIds, reasonCode, attempts[] }

  • attempts[] includes { attemptTime, outcome, errorDetail, backoffApplied }

  • Retry bounded times for transient conditions (e.g., throttling)

  • Mark deterministic end state when retries exhausted

  • Allow reprocessing after remediation while preserving attempt history