For operations and internal-audit leads who inherit an allocation decision after the fact: a settlement pledge, a treasury cash placement, a payment routing choice, a liquidity sweep, an order fill. The question that matters is not whether this allocation was the best one; it is whether the allocation that was actually chosen follows from the inputs that were true when it was chosen. This is a reproducibility question, and art-515, the allocation decision receipt, answers it directly by re-deriving the allocation from the declared inputs and reporting whether the two agree.
Six months after an allocation runs, the person reviewing it was not in the room. They were not the trader, the optimizer, or the desk that ran it. What they have is a record. The reproducibility question asks: given the eligibility schedule, the inventory that was on offer, the haircut table version in force, and the objective that was declared at the time, does re-running the declared objective over those declared inputs land on the allocation that was actually chosen? If yes, the allocation is explained. If no, the record should say so plainly, name the input or constraint that explains the gap, and stop there; it should never speculate about why a human or system diverged from the optimum.
| Input | What it is | Collateral instance | Non-collateral instance |
|---|---|---|---|
| Eligibility schedule | The set of candidates permitted to satisfy the obligation, as of the snapshot in force | Which assets are eligible to be pledged against this obligation, per the schedule in force that day | Which accounts are permitted to fund a payment corridor, per the routing policy in force that day |
| Inventory snapshot | What was actually on offer at the time, with its per-candidate cost or weight | The pool of pledgeable assets, each with a cost and an HQLA/haircut weight | The pool of liquidity positions available for a treasury sweep, each with a cost of funds |
| Objective declared | The stated goal the allocation was optimizing for | cheapest_to_deliver, preserve_hqla, minimise_movements | A caller-named objective such as fastest settlement corridor or minimum counterparty concentration |
| Allocation chosen | What was actually decided, to be checked against the other three | Which specific assets, in which amounts, were pledged | Which specific account funded which specific leg of the payment |
The re-derivation runs one fixed, published rule per declared objective: the same rule every time, so identical inputs always re-derive an identical candidate allocation. It does not search for a better allocation than the one it is checking, and it does not claim the chosen allocation was wrong when the two diverge. It reports whether the declared objective and declared inputs explain the choice, and if they do not, which constraint is binding.
art-515 ships no eligibility table and no haircut table of its own, and performs no lookups of any kind after the page loads. It consumes the eligibility and haircut steps' outcomes as inputs and edits neither. See the allocation-decision-receipt chain page for the full composed run.
ADR_REPRODUCED or ADR_DIVERGENT), the cost delta between the chosen allocation and the re-derived one, and the specific input or constraint that explains the difference. That is the entire claim. What the reviewer does with a divergence, whether that is asking the desk, checking for an override memo, or escalating, is a downstream judgment the receipt does not make for them.ADR_INPUTS_INSUFFICIENT fires when the declared inputs cannot decide the question at all (for example, no eligible inventory covers the obligation), which is different from ADR_DIVERGENT, which fires when the inputs are sufficient but the chosen allocation still does not match the re-derivation. ADR_OBJECTIVE_UNDECLARED fires when no objective was named for the run; a caller-named objective outside the three built-in labels is accepted and used as declared. ADR_CONSTRAINT_BINDING names the specific constraint that explains a divergence.art-515 re-derives against a declared objective over a declared input set. It does not search the solution space for the cheapest possible allocation across every objective, it does not claim to find a better allocation than the one the caller chose, and a divergence is not proof the caller's allocation was wrong. Its only claim is whether the chosen allocation is explained by the objective and inputs declared for it.