Problem
The pattern env.storage().instance().get(&Key).unwrap_or(default) is repeated 40+ times across src/contracts/logic.rs and src/contracts/proxy_entry.rs (e.g. logic.rs around the snapshot/vote-processing functions), with no shared accessor — even though src/storage.rs already demonstrates the alternative pattern (thin named wrapper functions like get_active_task/get_archived_task) for task storage specifically.
Why it matters
The storage.rs pattern isn't applied consistently to the many DataKey reads scattered through logic.rs/proxy_entry.rs, so those reads carry no named intent (what value, what default, why) and any change to how a given key is stored/defaulted has to be hunted down across many inline call sites instead of one wrapper function.
Suggested fix
Extract named accessor functions (following the existing storage.rs convention) for the most frequently repeated DataKey reads in logic.rs/proxy_entry.rs.
Acceptance criteria
Problem
The pattern
env.storage().instance().get(&Key).unwrap_or(default)is repeated 40+ times acrosssrc/contracts/logic.rsandsrc/contracts/proxy_entry.rs(e.g.logic.rsaround the snapshot/vote-processing functions), with no shared accessor — even thoughsrc/storage.rsalready demonstrates the alternative pattern (thin named wrapper functions likeget_active_task/get_archived_task) for task storage specifically.Why it matters
The
storage.rspattern isn't applied consistently to the manyDataKeyreads scattered throughlogic.rs/proxy_entry.rs, so those reads carry no named intent (what value, what default, why) and any change to how a given key is stored/defaulted has to be hunted down across many inline call sites instead of one wrapper function.Suggested fix
Extract named accessor functions (following the existing
storage.rsconvention) for the most frequently repeatedDataKeyreads inlogic.rs/proxy_entry.rs.Acceptance criteria