feat: add opt-in model allowlist for OpenRouter #45

Merged
alee merged 7 commits from feat/opt-in-allowlist into main 2026-09-06 23:13:49 +00:00
Owner

Implements a DB-backed opt-in allowlist for OpenRouter models.

  • Schema: new table
  • Seed: 30 curated OpenRouter model IDs in
  • Config: knob on DispatchProvider (config-readonly)
  • Poller: Filter-before-upsert logic + deprecation prune for non-allowlisted rows
  • Admin API: allowlist CRUD endpoints + live catalog-preview
  • Admin UI: allowlist management section on providers page
  • Tests: ~25 new tests covering config, poller, and admin API

Full suite: 1491 passed, 0 failures.
Verified with live QA on throwaway instance.

Implements a DB-backed opt-in allowlist for OpenRouter models. - Schema: new table - Seed: 30 curated OpenRouter model IDs in - Config: knob on DispatchProvider (config-readonly) - Poller: Filter-before-upsert logic + deprecation prune for non-allowlisted rows - Admin API: allowlist CRUD endpoints + live catalog-preview - Admin UI: allowlist management section on providers page - Tests: ~25 new tests covering config, poller, and admin API Full suite: 1491 passed, 0 failures. Verified with live QA on throwaway instance.
alee added 7 commits 2026-09-06 23:13:32 +00:00
Add tests/test_allowlist.py and tests/test_admin_allowlist.py covering config validation, poller filter/prune behavior, admin CRUD, and integration scenarios A/B/C plus NeuralWatt regression.

Also set conn.row_factory = sqlite3.Row in poller.main() so the new allowlist SELECT returns Row objects, matching the rest of the codebase.
alee merged commit b864957616 into main 2026-09-06 23:13:49 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alee/6krrt#45