Problem Statement
Several state-changing operations do not emit events:
reward-pool::set_pause — toggles global pause; no event.
reward-pool::initialize — bootstrap; no event.
course-registry::initialize — same.
badge-nft::initialize — same.
stake-vault::initialize — does emit StakeVaultInitialized.
quest-engine::initialize — same.
governance::initialize — same.
The asymmetry: half the contracts emit init events, half don't. Off-chain indexers can't reconstruct admin wiring from events alone.
Why It Matters
- Operations and analytics teams use events as the source of truth.
- An event-less init means indexers must poll, missing the moment.
Expected Outcome
- Every
initialize() emits a ContractInitialized { admin, role_addresses... } event.
- Every
set_pause() emits a PauseToggled { admin, status } event.
- Symmetric
PauseToggled for quest-engine::set_pause.
Acceptance Criteria
- New event types defined and emitted.
- Tests assert the events are present.
- Cross-contract indexer documentation updated.
Implementation Notes
- Use consistent naming
ContractInitialized, PauseToggled, AdminTransferred across all contracts.
Files / Modules Affected
All six contracts; cross-cutting doc updates.
Dependencies
Issue #20 (two-step admin transfer) ties to this.
Difficulty
Easy.
Estimated Effort
2–3 hours.
Suggested Labels
observability, P2, quality
Problem Statement
Several state-changing operations do not emit events:
reward-pool::set_pause— toggles global pause; no event.reward-pool::initialize— bootstrap; no event.course-registry::initialize— same.badge-nft::initialize— same.stake-vault::initialize— does emitStakeVaultInitialized.quest-engine::initialize— same.governance::initialize— same.The asymmetry: half the contracts emit init events, half don't. Off-chain indexers can't reconstruct admin wiring from events alone.
Why It Matters
Expected Outcome
initialize()emits aContractInitialized { admin, role_addresses... }event.set_pause()emits aPauseToggled { admin, status }event.PauseToggledforquest-engine::set_pause.Acceptance Criteria
Implementation Notes
ContractInitialized,PauseToggled,AdminTransferredacross all contracts.Files / Modules Affected
All six contracts; cross-cutting doc updates.
Dependencies
Issue #20 (two-step admin transfer) ties to this.
Difficulty
Easy.
Estimated Effort
2–3 hours.
Suggested Labels
observability,P2,quality