Summary
impl_maintainable! takes an instance extension and a persistent: key list
(crates/maintainable/src/macros.rs). Temporary storage has a TTL too, and a contract that keeps
anything meaningful there has no way to declare it. Adding an optional temporary: list makes the
macro cover all three tiers.
Temporary entries differ from persistent ones in a way the macro has to respect: when a temporary
entry expires it is deleted outright, not archived, and Protocol 23's automatic restore does not
bring it back. Extending a key that no longer exists must not abort the whole run.
Acceptance Criteria
Tech Stack
Rust (edition 2021, toolchain 1.93.0 pinned in rust-toolchain.toml), soroban-sdk 27.0.4,
target wasm32v1-none. Build with stellar contract build, never cargo build. Tests are
#[cfg(test)] modules on Env::default(); run them with cargo test --all.
Summary
impl_maintainable!takes aninstanceextension and apersistent:key list(
crates/maintainable/src/macros.rs). Temporary storage has a TTL too, and a contract that keepsanything meaningful there has no way to declare it. Adding an optional
temporary:list makes themacro cover all three tiers.
Temporary entries differ from persistent ones in a way the macro has to respect: when a temporary
entry expires it is deleted outright, not archived, and Protocol 23's automatic restore does not
bring it back. Extending a key that no longer exists must not abort the whole run.
Acceptance Criteria
impl_maintainable!accepts an optionaltemporary: [...]list alongsidepersistent:.temporary:compiles and behaves exactly as it does today.__lk_extend_allextends temporary keys with the same threshold andextend_toas the rest.has already been deleted.
Tech Stack
Rust (edition 2021, toolchain 1.93.0 pinned in
rust-toolchain.toml),soroban-sdk27.0.4,target
wasm32v1-none. Build withstellar contract build, nevercargo build. Tests are#[cfg(test)]modules onEnv::default(); run them withcargo test --all.