- Add
ProviderRegistration record and GetRegistrationTime; backfill registered_at at upgrade height for every existing provider.
- Implement the on-chain provider-to-tenant notice primitive as provider-signed maintenance records and typed events. This is not arbitrary chat/messaging; it is the consensus source of truth that L-19/L-20 consume for tenant alerts.
- Add
ProviderMaintenanceParams storage with MsgUpdateParams (gov authority), QueryParams, genesis import/export.
- Add
MsgOpenProviderMaintenance / MsgCloseProviderMaintenance handlers with validation against the params (duration ≤ max_duration, starts_at within max_lookahead, single-active-window check per §3.15, clearing a stale active-window index when the previous window has elapsed).
- Maintenance record CRUD, active-window index by provider, monotonic ID counter, status derived from block time in
QueryProviderMaintenance / QueryProviderMaintenances.
- Provider CLI support for
open-maintenance, close-maintenance, and maintenance queries.
- Bump provider module consensus version; add genesis import/export tests covering registration and maintenance state.
Depends on: L-1
DoD: New providers store registration time; mainnet-fork upgrade backfills every existing provider; maintenance open/close round-trips; second active window per provider rejected; typed open/close events are emitted with enough fields for clients to map alerts; status derives Scheduled/Active/Elapsed/Closed from block time without an EndBlocker tick.
ProviderRegistrationrecord andGetRegistrationTime; backfillregistered_atat upgrade height for every existing provider.ProviderMaintenanceParamsstorage withMsgUpdateParams(gov authority),QueryParams, genesis import/export.MsgOpenProviderMaintenance/MsgCloseProviderMaintenancehandlers with validation against the params (duration ≤max_duration,starts_atwithinmax_lookahead, single-active-window check per §3.15, clearing a stale active-window index when the previous window has elapsed).QueryProviderMaintenance/QueryProviderMaintenances.open-maintenance,close-maintenance, and maintenance queries.Depends on: L-1
DoD: New providers store registration time; mainnet-fork upgrade backfills every existing provider; maintenance open/close round-trips; second active window per provider rejected; typed open/close events are emitted with enough fields for clients to map alerts; status derives Scheduled/Active/Elapsed/Closed from block time without an EndBlocker tick.