-
Notifications
You must be signed in to change notification settings - Fork 0
v2 porting plan
buildsbypat edited this page May 24, 2026
·
3 revisions
This document maps the legacy ROB feature inventory (ROB_FEATURE_REPORT.md) to the current Rob v2 split-runtime architecture (Discord bot + webhook server + PostgreSQL + Components V2).
- Legacy behaviour: config/env load, DB init/migrations, cog registration, app command sync, webhook lifecycle hooks, global blacklist checks on slash/prefix.
-
Legacy modules:
legacy/single-process-bot/config.py, bot bootstrap/runtime files. - Current v2 status: Partial.
- Classification: Partial.
- Port? Yes.
-
Suggested v2 modules:
apps/bot/main.py,rob/discord/client.py,rob/discord/checks.py,rob/services/blacklist_service.py,rob/database/repositories/blacklist.py. - Migrations: none.
- Services/repos: blacklist parity hardening.
- Tests: startup smoke + deny response regression tests.
- Priority: P0 startup/P1 blacklist parity.
- Notes/risks: keep deny responses non-leaky.
- Legacy behaviour: signed webhook verification, secret validation, dedupe, extraction, send posting + leaderboard sync.
-
Legacy modules:
legacy/single-process-bot/webhook_server.py,throne_tracker.py. - Current v2 status: Partial (core exists).
- Classification: Partial.
- Port? Yes.
-
Suggested v2 modules:
apps/webhook/main.py,rob/throne/webhooks.py,rob/throne/security.py,rob/throne/payloads.py,rob/services/send_service.py,rob/services/send_queue_service.py. - Migrations: ensure dedupe keys are indexed.
- Services/repos: send repo dedupe + queue transitions.
-
Tests: signature, secret mismatch, dedupe, payload mapping for
gift_purchased/contribution_purchased/gift_crowdfundedwith direct minor units. - Priority: P0.
- Notes/risks: no runtime SQLite and no bot/webhook merge.
- Status: Partial; behaviour retained and documented.
- Priority: P0.
- Status: Partial.
- Priority: P0.
- Needs: stronger copy parity, historical claim checks, setup verification flow polish.
- Status: Partial.
- Priority: P0.
- Needs: old-Rob tone + title/body/claim-state/rank line + currency friendly names.
- Status: Partial.
- Priority: P0.
- Needs: exactly main board + stats panel, no separate sub leaderboard message, plus future explicit offline source if desired.
- Status: Partial.
- Priority: P0/P1.
- Needs: DM approve/ignore actions + rate limits.
- Status: Partial.
- Priority: P0/P1.
- Needs: legacy method aliases and pipeline parity.
- Status: Partial.
- Priority: P0/P1.
- Needs: restore windows, admin fix/status parity.
- Status: Partial.
- Priority: P0.
- Needs: robctl parity + queue flush/release UX.
- Status: Missing.
- Priority: P1.
- Safety: dry-run default, opt-in destructive mode only.
- Status: Missing.
- Priority: P2/P3.
- Status: Missing.
- Priority: P2.
- Status: Missing.
- Priority: P1/P2.
- Status: Partial.
- Priority: P1.
- Status: Partial.
- Priority: P1/P2.
- Status: Partial.
- Priority: P1.
- Status: Intentionally removed.
- Priority: Do not port.
- Reason: v2 direction is always-on tracking, not event-window orchestration.
| Feature | Legacy behaviour | v2 status | Port priority | Suggested PR | Notes |
|---|---|---|---|---|---|
| Startup/lifecycle | boot + checks + sync | Partial | P0/P1 | bot-startup-hardening | retain split runtime |
| Throne ingestion | signed webhook + dedupe | Partial | P0 | throne-ingestion-parity | direct minor-unit pricing |
| Test webhook mode | setup verification vs real sends | Partial | P0 | webhook-test-mode | explicit setup payloads never real sends |
| Registration | domme/sub + claim + setup DM | Partial | P0 | registration-parity | keep webhook URL private |
| Send card | rich old-Rob send card | Partial | P0 | send-card-v2 | no embeds |
| Leaderboards | 2 fixed messages + stats | Partial | P0 | leaderboard-main-stats | remove separate sub leaderboard |
| Send requests | DM approve/ignore flow | Partial | P0/P1 | send-request-rebuild | enforce 24h rate limits |
| Manual sends | /add + methods | Partial | P0/P1 | manual-send-parity | alias legacy methods |
| Counting | numeric + restore logic | Partial | P0/P1 | counting-restore-parity | add restore metadata fields |
| Maintenance | queue/release/refresh | Partial | P0 | maintenance-parity | DB-backed state |
| Inactivity | periodic warning/kick | Missing | P1 | inactivity-service | dry-run safe default |
| DM audit | forward inbound DMs | Missing | P2/P3 | dm-audit | privacy review required |
| Warn relay | Carl warn -> courtesy DM | Missing | P2 | warn-relay | dedupe needed |
| Rule helper | !rule topic map | Missing | P1/P2 | rule-command | slash-first acceptable |
| Blacklist | global deny + admin tools | Partial | P1 | blacklist-parity | non-leaky deny |
| Local admin endpoints | health/maintenance/sync/broadcast | Partial | P1/P2 | local-admin-surface | loopback only |
| Shell helpers | extensive ops commands | Partial | P1 | robctl-expansion | command matrix parity |
| Event runtime | event windows/reports | Intentionally removed | Do not port | n/a | only if explicitly requested |
- 2026-05-23: Public send card now uses compact Components V2 layout with real
discord.ui.Separator(), thumbnails, and purple accent constants fromrob/ui/theme.py; public send IDs remain intentionally absent from the announcement card. - 2026-05-23: Added NEW LEADER ALERT runtime posting with bot-state dedupe and maintenance/test-send safeguards.
- 2026-05-23: Leaderboard and stats cards now use explicit separator components, registered Dom/me aggregation, and dynamic live/maintenance status on the main board.
- 2026-05-23: Stored PostgreSQL-backed public send IDs are available for support/admin workflows, with a
robctl sends backfill-public-idspath for older rows.