feat: runtime manager
This commit is contained in:
+16
-1
@@ -208,6 +208,9 @@ Primary configuration groups:
|
||||
- `NOTIFICATION_ADMIN_EMAILS_GAME_GENERATION_FAILED`
|
||||
- `NOTIFICATION_ADMIN_EMAILS_LOBBY_RUNTIME_PAUSED_AFTER_START`
|
||||
- `NOTIFICATION_ADMIN_EMAILS_LOBBY_APPLICATION_SUBMITTED`
|
||||
- `NOTIFICATION_ADMIN_EMAILS_RUNTIME_IMAGE_PULL_FAILED`
|
||||
- `NOTIFICATION_ADMIN_EMAILS_RUNTIME_CONTAINER_START_FAILED`
|
||||
- `NOTIFICATION_ADMIN_EMAILS_RUNTIME_START_CONFIG_INVALID`
|
||||
- OpenTelemetry:
|
||||
- standard `OTEL_*` variables
|
||||
- `NOTIFICATION_OTEL_STDOUT_TRACES_ENABLED`
|
||||
@@ -292,10 +295,13 @@ Accepted intents use the original Redis Stream `stream_entry_id` as
|
||||
| `lobby.race_name.registration_eligible` | `Game Lobby` (`game_lobby`) | capable member (`audience_kind=user`) | `push+email` | `game_id`, `game_name`, `race_name`, `eligible_until_ms` |
|
||||
| `lobby.race_name.registered` | `Game Lobby` (`game_lobby`) | registering user (`audience_kind=user`) | `push+email` | `race_name` |
|
||||
| `lobby.race_name.registration_denied` | `Game Lobby` (`game_lobby`) | incapable member (`audience_kind=user`) | `email` | `game_id`, `game_name`, `race_name`, `reason` |
|
||||
| `runtime.image_pull_failed` | `Runtime Manager` (`runtime_manager`) | configured admin email list (`audience_kind=admin_email`) | `email` | `game_id`, `image_ref`, `error_code`, `error_message`, `attempted_at_ms` |
|
||||
| `runtime.container_start_failed` | `Runtime Manager` (`runtime_manager`) | configured admin email list (`audience_kind=admin_email`) | `email` | `game_id`, `image_ref`, `error_code`, `error_message`, `attempted_at_ms` |
|
||||
| `runtime.start_config_invalid` | `Runtime Manager` (`runtime_manager`) | configured admin email list (`audience_kind=admin_email`) | `email` | `game_id`, `image_ref`, `error_code`, `error_message`, `attempted_at_ms` |
|
||||
|
||||
Rules:
|
||||
|
||||
- v1 supports exactly the fifteen `notification_type` values listed above
|
||||
- v1 supports exactly the eighteen `notification_type` values listed above
|
||||
- `lobby.application.submitted` keeps one stable `notification_type` and one
|
||||
stable `payload_json` shape; private games publish `audience_kind=user`
|
||||
while public games publish `audience_kind=admin_email`
|
||||
@@ -308,6 +314,12 @@ Rules:
|
||||
with a 30-day `eligible_until_ms` window
|
||||
- `lobby.race_name.registered` is emitted on successful
|
||||
`lobby.race_name.register` commit
|
||||
- the three `runtime.*` types are emitted by `Runtime Manager` only on
|
||||
first-touch start failures (image pull, container create/start, start
|
||||
configuration validation); they are administrator-only in v1 and have no
|
||||
push counterpart. `Runtime Manager` does not publish notifications for
|
||||
ongoing health changes — those flow through `runtime:health_events` and
|
||||
are escalated by `Game Master` if needed.
|
||||
|
||||
## Recipient Enrichment And Locale Policy
|
||||
|
||||
@@ -436,6 +448,9 @@ Initial notification-owned template assets:
|
||||
| `lobby.race_name.registration_eligible` | `lobby.race_name.registration_eligible` | `en/subject.tmpl`, `en/text.tmpl` |
|
||||
| `lobby.race_name.registered` | `lobby.race_name.registered` | `en/subject.tmpl`, `en/text.tmpl` |
|
||||
| `lobby.race_name.registration_denied` | `lobby.race_name.registration_denied` | `en/subject.tmpl`, `en/text.tmpl` |
|
||||
| `runtime.image_pull_failed` | `runtime.image_pull_failed` | `en/subject.tmpl`, `en/text.tmpl` |
|
||||
| `runtime.container_start_failed` | `runtime.container_start_failed` | `en/subject.tmpl`, `en/text.tmpl` |
|
||||
| `runtime.start_config_invalid` | `runtime.start_config_invalid` | `en/subject.tmpl`, `en/text.tmpl` |
|
||||
|
||||
`auth.login_code` does not belong to the notification-owned template set.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user