Fictional T-94: messaging, decision authority and execution require separate evidence. The three investigation paths are proposed and unexecuted.
Engineering guide · Sources reviewed 23 October 2026
Reconstruct a Travel Rule transfer by establishing what each system observed, which decision governed the next action and whether an execution request actually took effect. A provider returning to service answers an availability question. It does not settle the history of a particular transfer, especially when the last response was lost.
For a CASP, the useful recovery artifact is a bounded timeline with links to source evidence and explicit unresolved facts. The procedure below uses fictional transfer T-94 to separate duplicate delivery, delayed evidence and a missing message. All identifiers and times are invented. No real outage, customer transfer or recovery exercise was executed for this article.
An outage can expose a missing relationship between the messaging connector and custody workflow. Pharos Production's published Travel Rule integration engineering scope includes IVMS101-based exchange and integration with compliance and custody systems. That service scope makes the evidence boundary a relevant engineering discussion; it does not establish that the example here was delivered or tested.
Start with the internal transfer identity, the incident scope and the point through which the review includes observations. State the environment and affected provider route. Record whether the outage involved outbound calls, inbound callbacks, a counterparty channel or access to historical records. Several may be affected, but each needs its own evidence. Give the reconstruction a version. A finding prepared at 10:20 can legitimately differ from one prepared at 10:40 if a missing receipt arrives between them. Preserve the earlier finding with its original evidence cutoff, then issue an updated version explaining the change. Avoid silently replacing an uncertain finding with a later successful state.
Decide what the reviewer must answer: whether information was delivered, whether a business action was authorized, whether an execution request was applied or whether the retained material can establish none of those facts. These questions require different sources. An incident dashboard may show the affected service interval while omitting the transfer's decision history. Capture both the incident reference and the individual evidence references before drawing a conclusion.
At 10:00, the local system records transfer T-94 with payload revision E-4 and an initial review hold. At 10:02, attempt A-1 sends message M-94 to provider record V-94. At 10:03, the local caller records a timeout. Whether the provider accepted A-1 is unresolved at that observation point. These times illustrate record relationships, not measured latency or a recommended waiting period.
At 10:07, a callback referring to M-94 is durably received. At 10:08, the same callback delivery identity appears again. The duplicate creates another receipt observation without creating another transfer. At 10:12, a delayed correction creates E-5. It must remain distinguishable from the E-4 evidence available earlier. None of those message observations proves that custody performed the intended asset movement.
At 10:14, a lookup for custody instruction Q-94 returns no usable result. The base example therefore ends with execution unresolved. The matrix and diagram show three investigation branches around that shared history. They are proposed review paths, not claims that all branches happened in one production incident. A later authoritative execution record would support a new finding with its own cutoff and provenance.
Build a cross-reference from T-94 to its payload revisions, outbound attempts and provider record. Add the counterparty message reference where it exists, then link the compliance decision to the custody instruction and any resulting ledger or network reference. Keep the source namespace beside every identifier. Two providers can issue the same short reference without referring to the same object. The relationship needs a reason and an owner. A connector may have recorded V-94 as the response to A-1; a reviewer may later establish correspondence from a provider export. Those are different mapping origins. Record when the relationship became known and which evidence supports it. Do not present a manually reconstructed mapping as an original application fact.
A matching amount or destination can help locate candidates, but it is weak evidence of identity when several transfers share those attributes. Preserve unresolved candidate matches rather than choosing whichever makes the timeline look complete. If the original payload is unavailable, distinguish an exact retained copy from a reconstructed representation. Similar visible fields cannot prove that both parties received identical bytes or interpreted the same version.
Use three parallel histories. The messaging history contains attempts and receipts. The decision history records effective evidence, policy and actual authority. The execution history records custody requests and observed financial outcomes. Link them explicitly, while allowing one history to remain unresolved after another is settled.
The TRISA workflow documentation gives a concrete protocol example: an accepted exchange precedes the on-chain transaction in its standard workflow, while completion carries the later transaction information. Its rejection guidance also explains that a rejection message cannot itself prevent a blockchain transaction. These are TRISA-specific semantics, not a universal translation table for every provider's status labels.
For the system under review, retain the provider's documented status meaning and the connector revision that interpreted it. A locally displayed completed label may describe successful message processing, while a separate custody service still reports uncertainty. Show both observations and the mapping responsible for the display. When the semantics are undocumented, the finding should say which conclusion remains unsupported and who must clarify the contract.
Store source event time and local receipt time as separate fields. Include the clock source and any known offset or synchronization limitation. A callback can describe an earlier event while arriving after a later local decision. Sorting by the callback's embedded timestamp alone can make information appear available before the operator actually received it.
Use causal references where they are supported: A-1 sent M-94; a receipt identifies M-94; a decision names E-4. These relationships can establish a partial order even when timestamps overlap. Preserve uncertainty for events whose relative order cannot be established. Do not manufacture a precise sequence by adjusting times until they fit the expected story.
For the fictional timeline, the late E-5 observation belongs to the review after it was received. If an earlier decision used E-4, its original evidence basis remains E-4. The later correction may require another decision under the applicable workflow. It does not change the historical fact of what the earlier decision could see. Record the revised finding and its consequences separately from any clock correction made during investigation.
For each retained export, record its source, collection time and query boundary. Include pagination or cursor coverage where relevant. An export that stopped halfway through an outage interval cannot establish the absence of a later record. Preserve the collection failure and the portion actually obtained so another reviewer can distinguish incomplete retrieval from an empty result. Keep the original permitted artifact alongside any normalized representation. Record which transformation produced the review view and which fields it omitted. If an operator manually copies information from a support response, preserve that provenance instead of presenting the copied text as an authenticated provider event. A content hash can help detect later alteration of retained bytes; it does not prove that the provider's statement was accurate or that the export was complete.
Collection provenance also supports correction. When a second export expands the available interval, link it to the earlier package and identify the newly supported finding. The recipient can then see why uncertainty changed without assuming that the first reviewer overlooked evidence already available.
Compare the delivery identity, source identity and payload revision before classifying the second callback as a duplicate. A repeated delivery identifier with different content is a conflict requiring investigation. A different delivery identifier carrying the same business message may be a provider redelivery mechanism. The connector contract determines the appropriate deduplication scope.
Keep each receipt observation while preventing an already applied business transition from being applied again. The retained record should show what matched, which prior result was reused and what new effect, if any, occurred. Removing every repeated log row destroys evidence of the outage's delivery behavior and makes the deduplication decision harder to explain.
For T-94, the proposed check repeats the 10:07 callback at 10:08. The expected evidence is two received deliveries, one identified message and no additional business effect attributable to the duplicate. This is an acceptance expectation, not a test result. If the implementation cannot show whether an extra effect occurred, report that gap and reconcile the affected execution records before describing the duplicate as harmless.
A delayed callback must be evaluated against the state present when it is applied. Preserve its original identity and payload revision, its receipt time and the action taken by the consumer. If E-5 changes a material attribute, connect it to the decision it may affect. Do not overwrite E-4 simply because the provider's current view now exposes E-5.
The old approval may have been limited to a particular evidence revision, destination or validity condition. Determine whether it still covers the proposed action under the operator's declared policy. The evidence reviewer establishes the history; the authorized decision owner determines the permitted next action. A successful callback handler does not fill a missing approval record.
In the proposed T-94 exercise, make E-5 arrive after an earlier review entry and ask the recipient to explain both versions. The expected output identifies what changed, which earlier conclusion remains historically valid and which present action requires reconsideration. If the late message contradicts a completed execution, retain that contradiction as a separate investigation finding rather than rewriting the transfer into a clean sequence.
Absence from an available export establishes an observation about that export. It does not automatically establish that a message was never sent or accepted. Record the query scope and cutoff, the provider account or route and any retention or access limitation. A provider's support response should identify the records and interval it actually checked.
Try the permitted lookup routes associated with the original attempt and message identity. Compare the local outbox, durable inbound receipts and any accessible counterparty evidence. If a lookup is unavailable, retain the failed retrieval as a limitation. Do not substitute the provider's general recovery announcement for transfer-specific evidence, or silently expand a support statement beyond its stated search scope.
For T-94, the missing-message branch leaves A-1's provider acceptance unresolved until an authoritative observation supports a narrower conclusion. Assign an owner and the next permitted evidence request. The result may remain unresolved after service restoration. That is a valid reconstruction outcome when its limits are explicit. An incident can close technically while a transfer-level review remains open under a separate operational owner.
Investigate Q-94 independently of the messaging route. Retrieve the custody request identity, any response and the source's declared execution status. Follow the resulting reference into the internal ledger and, where applicable, the relevant network observation. Keep asset and network context beside transaction identifiers so a matching string cannot imply correspondence across unrelated environments. A failed lookup can mean that the query failed, the record is inaccessible or the source returned a documented negative result. Those findings have different implications. State which occurred. A network observation may support broadcast or inclusion at a particular cutoff; describe the observed state and the operator's finality policy instead of assigning universal certainty to a transaction hash.
If execution is found but the internal posting is missing, assign the accounting reconciliation through the established procedure. If the posting exists but external execution remains unverified, preserve that mismatch. Neither discrepancy authorizes another asset movement. A return or correction is a new controlled action with its own evidence and authority. The reviewer should be able to follow that new action without losing the history of the original instruction.
Identify the exact operation proposed for repetition. A read-only status lookup, a message submission and an asset-transfer instruction have different effects. A retry key is useful only within a documented scope, with known retention behavior and a reliable association to the original request. A new key can create a new operation rather than recover an earlier one.
The Internet Engineering Task Force's RFC 9110, section 9.2.2, begins its client retry restriction with:
A client SHOULD NOT automatically retry a request with a non-idempotent method
The sentence continues with exceptions where the client knows the request's semantics are idempotent or can detect that the original was never applied. Preserve those qualifications. This is HTTP guidance, not a statement that every Travel Rule exchange uses HTTP or that an HTTP property establishes a safe financial retry.
Before resuming T-94, require the responsible owner to name the operation, its evidence basis and its permitted effect. If Q-94 remains unresolved, replaying a message must not silently replay custody execution. Keep the recovery action and its actual result as new records linked to the original attempt. No retry is performed by following this article's fictional example.
A replacement route can restore connectivity while changing identifiers and state semantics. Record the original provider record and the new route's reference under T-94. Preserve the mapping revision and the reason for switching. A second provider's success response cannot retrospectively establish what the first provider did during its outage. Ask which operation the replacement route will perform and whether the first route can still complete it. If both can produce callbacks, preserve their origins and the rules for accepting each observation. Do not assume that a deduplication key or message identifier has a shared namespace across providers. A locally enforced business boundary needs its own retained evidence.
For a proposed failover check, introduce a late response from the original route after the replacement route has returned. The reviewer should identify both observations and explain the accepted transition under the effective configuration. This check is unexecuted here. Its purpose is to expose ownership and mapping questions before a real recovery depends on an undocumented relationship between two provider consoles.
The European Banking Authority's Travel Rule Guidelines, EBA/GL/2024/11, address detection and management of missing or incomplete transfer information under Regulation (EU) 2023/1113. That framework is separate from a provider's availability status. This reconstruction method does not create an outage exemption, a universal waiting period or permission to execute a transfer with unresolved requirements.
Have the responsible compliance owner identify the applicable policy and disposition procedure for the actual transfer. The Travel Rule exception workflow comparison covers the adjacent choice among operational routes. Here, the narrower task is to establish which observations and approvals that owner can rely on after the outage.
Keep personal information within the operator's authorized evidence boundary. Provide controlled references where a recipient does not need the underlying identity data. Record unavailable or expired access rather than attaching unrestricted archives to make the package look complete. Retention duration, disclosure scope and source retrieval permissions belong to the applicable policy and legal framework; the engineering record must preserve those declared limits.
The reconstruction package should identify its transfer population, cutoff and evidence version before presenting a conclusion. Include the identity map, original observations, their interpretation rules, the decision history and execution findings. Add a limitations register linking every unresolved fact to its owner and next permitted evidence request. Preserve the export schema and source references with the package. Distinguish source records from analyst annotations. A note explaining why two identifiers probably correspond is useful, but it must remain visibly different from a connector-produced relationship. If a later reviewer disagrees, retain the earlier note and the correction. The package should make that disagreement inspectable without requiring unrestricted access to every source system.
Test retrieval using the intended recipient role. A link working for an administrator does not demonstrate that an incident reviewer can open it. Record denied access and missing content separately. The CASP evidence engineering hub provides the broader control-trace context. This package's specific job is to explain T-94 and its unresolved boundaries at the stated cutoff.
A convincing T-94 example cannot establish that every transfer affected by the outage has been reconciled. Define the population selection from retained records, including the incident interval and relevant provider routes. Explain how transfers initiated before the interval, but awaiting callbacks during it, are included or excluded. Preserve the selection method and its limitations. Keep a disposition for each selected transfer: reconstructed with the required evidence, unresolved with an owner or excluded under a stated reason. Compare the population with relevant messaging and execution sources. A list derived only from successful callbacks may omit the very transfers whose callbacks never arrived. State which independent reference supports the population boundary.
Report counts only after computing them from the declared records. This article supplies no production population, recovery percentage or measured review time. Where a source cannot establish completeness, name that limitation rather than treating the worked example as a universal result. The handover should identify who will resolve the remaining population question and what evidence would allow the claim to change.
A proposed acceptance exercise should ask the recipient to explain the three T-94 branches from the retained package. Repeat a callback, delay a changed evidence revision and remove one source observation. Ask for distinct findings in each case, then check that no unintended execution is introduced by the exercise. Run it only in an authorized test environment with synthetic data and explicit controls.
The closure record should state what was reconstructed, what remains unresolved and which next action has a responsible owner. Keep technical service restoration, transfer disposition and incident-review closure as separate recorded outcomes. If a later source changes the conclusion, issue a linked revision rather than erasing the earlier finding.
When the missing relationship spans messaging and custody, Pharos Production's MiCA compliance software development service provides a relevant scoping route. Bring a synthetic disputed transfer, the available records and the intended recipient role. Define the evidence deliverable and acceptance questions before estimating implementation. The agreed result should explain the original history and its limits; it cannot supply observations that no system retained.
Dmytro Nasyrov. Photo supplied by the author.
Written by Dmytro Nasyrov PhD, software architect with 24 years of production experience. Dmytro is the founder and CTO of Pharos Production. He works on production software architecture for FinTech, AI, Web3 and blockchain systems.