91: Reconcile timed-out Evelyn IOU burner swaps in later iterations

This commit is contained in:
2026-10-06 07:47:34 +02:00
parent adb5f0235a
commit 152137ed87
25 changed files with 1057 additions and 184 deletions
@@ -96,3 +96,33 @@ The cached Solana blockchain decorator SHALL delegate every transaction-await ca
#### Scenario: Repeated awaits through cached decorator
- **WHEN** callers invoke transaction awaiting multiple times through the cached decorator
- **THEN** every invocation reaches the delegate independently
### Requirement: Read-only transaction reconciliation
The blockchain SHALL support bounded reconciliation of an existing signature at CONFIRMED or stronger, retaining normal await behavior and outcome statuses. Reconciliation SHALL distinguish definitive success/failure, demonstrated non-executed expiry and unresolved evidence. It SHALL use the existing shared RPC gate/deadline and historical status lookup without submission, caching, immediate retries or a new pacing mechanism. Unsupported expiry evidence SHALL remain unresolved.
#### Scenario: Definitive historical status
- **WHEN** the original signature is observed at or above requested commitment
- **THEN** reconciliation returns its successful or failed outcome with slot and complete failure details as applicable
#### Scenario: Below commitment or interrupted
- **WHEN** the signature is only observed below commitment or the check is interrupted
- **THEN** expiry is not inferred; an unresolved result is returned for lower commitment and interruption propagates normally
#### Scenario: Cached decorator
- **WHEN** reconciliation is invoked through the cached decorator
- **THEN** it reaches the delegate independently on every call
### Requirement: Expiry requires original validity and reliable local history absence
Expiry SHALL require signature-bound original validity, finalized height above its last valid height, original blockhash invalidity, retained local history through its submission anchor and fresh finalized signer-history absence. Missing, pruned, stale, lower-commitment or inconsistent evidence SHALL remain unresolved. Absence, elapsed time or blockhash invalidity alone SHALL NOT authorize clearing a pending transaction.
#### Scenario: Non-executed expiry is established
- **WHEN** all original-validity, finalized-height, original-blockhash, local-history-coverage and finalized signer-history absence checks succeed, with `minContextSlot` at/after the expired finalized context and a bounded page reaching before the submission anchor or exhausting covered retained history
- **THEN** reconciliation identifies a non-executed expired transaction without resubmitting it
#### Scenario: Evidence is incomplete
- **WHEN** original metadata is missing, history is unavailable/pruned, a lookup fails, a response is inconsistent/stale or the original blockhash is still valid
- **THEN** no expiry result is returned and the diagnostic explains the missing evidence
#### Scenario: Bounded history page is incomplete
- **WHEN** a full history page ends at or after the submission anchor
- **THEN** the transaction remains unresolved instead of treating partial absence as proof