Description
CalloraVault supports set_metadata/update_metadata/get_metadata for offerings but provides no way to delete a stale offering's metadata, leaving abandoned entries permanently consuming instance storage. Add an owner-only remove_metadata(offering_id) that removes the Metadata(String) key and emits an event.
Requirements and Context
- Owner-gated
remove_metadata(caller, offering_id) removing StorageKey::Metadata(offering_id).
- Emit
metadata_removed with the offering id.
get_metadata returns None afterward.
- Must be secure, tested, and documented
- Should be efficient and easy to review
Suggested Execution
- Fork the repo and create a branch
git checkout -b feature/vault-remove-metadata
- Implement changes
contracts/vault/src/lib.rs — remove_metadata + event
EVENT_SCHEMA.md — document the event
- Test and commit
cargo test -p callora-vault
- Test remove then
get_metadata returns None; owner-only enforced
- Include test output and notes in the PR
Example commit message
feat: add remove_metadata to vault offering registry
Acceptance Criteria
Guidelines
.rs under contracts/vault/src/, cargo test, /// docs, minimum 95% line coverage, no unwrap() in prod paths
- Clear documentation and inline comments
- Timeframe: 96 hours
Description
CalloraVaultsupportsset_metadata/update_metadata/get_metadatafor offerings but provides no way to delete a stale offering's metadata, leaving abandoned entries permanently consuming instance storage. Add an owner-onlyremove_metadata(offering_id)that removes theMetadata(String)key and emits an event.Requirements and Context
remove_metadata(caller, offering_id)removingStorageKey::Metadata(offering_id).metadata_removedwith the offering id.get_metadatareturnsNoneafterward.Suggested Execution
contracts/vault/src/lib.rs—remove_metadata+ eventEVENT_SCHEMA.md— document the eventcargo test -p callora-vaultget_metadatareturnsNone; owner-only enforcedExample commit message
Acceptance Criteria
remove_metadataimplemented and owner-gatedmetadata_removedevent emittedget_metadatareturnsNoneafter removalGuidelines
.rsundercontracts/vault/src/,cargo test,///docs, minimum 95% line coverage, nounwrap()in prod paths