Why this matters
Several contracts persist critical entries without extending TTL, so they can be archived. In escrow, EscrowStorage::save, add_approval, increment_approval_count and add_release_record never call extend_ttl, so a funded escrow can be archived before a 14-day timeout and freeze funds. In dispute_resolution and the chioma contract, instance State/TimeoutConfig TTL is only bumped at initialize/config writes, so the admin/state entry can be archived while per-record entries are kept alive, causing reads to fail with NotInitialized. update_metadata and royalty/payment writes also omit TTL bumps.
Acceptance criteria
Files to touch
contracts/escrow/src/storage.rs
contracts/dispute_resolution/src/lib.rs
contracts/chioma/src/agreement.rs
Out of scope
- Automatic TTL-renewal keeper
- Changing storage classes
Why this matters
Several contracts persist critical entries without extending TTL, so they can be archived. In escrow, EscrowStorage::save, add_approval, increment_approval_count and add_release_record never call extend_ttl, so a funded escrow can be archived before a 14-day timeout and freeze funds. In dispute_resolution and the chioma contract, instance State/TimeoutConfig TTL is only bumped at initialize/config writes, so the admin/state entry can be archived while per-record entries are kept alive, causing reads to fail with NotInitialized. update_metadata and royalty/payment writes also omit TTL bumps.
Acceptance criteria
Files to touch
contracts/escrow/src/storage.rscontracts/dispute_resolution/src/lib.rscontracts/chioma/src/agreement.rsOut of scope