open-swe/agent/dashboard
Johannes du Plessis 798cc6edf1
feat: out-of-process usage-snapshot builder (Phase 1) (#1468)
* feat: out-of-process usage-snapshot builder (Phase 1)

Move all usage-tab compute off the run-serving HTTP process (the #1434 bug
class). Read path is now a pure cache read with a typed computing placeholder
on cold miss; a dedicated usage_snapshot graph + global ~10min cron rebuild
every period's snapshot out-of-process, wrapped in asyncio.timeout and gated by
USAGE_SNAPSHOT_CRON_ENABLED. Lifespan makes one fire-and-forget scheduling call,
never a retained/looping task.

* fix: address PR review on usage-snapshot builder

- admin guard on /admin/usage/rebuild (was any logged-in user)
- cap lifespan loopback calls with asyncio.timeout(5) so a startup hang
  can't block boot
- memoize cron registration so steady-state requests skip the loopback
  check; reap duplicate crons from concurrent-replica races
- thread the computing flag through the usage payload too
2026-06-09 11:11:06 -07:00
..
__init__.py feat: open-swe dashboard for per-user profile config (#1302) 2026-05-15 11:23:53 -07:00
admin.py feat: open-swe dashboard for per-user profile config (#1302) 2026-05-15 11:23:53 -07:00
agent_overrides.py feat: Store-backed GitHub/Slack user mapping (self-service + admin) (#1369) 2026-06-01 14:37:19 -07:00
agent_usage.py feat: out-of-process usage-snapshot builder (Phase 1) (#1468) 2026-06-09 11:11:06 -07:00
analyzer_cron.py feat: outcomes dataset + bootstrap/continual split via skills (#1365) 2026-06-01 13:25:12 -07:00
enabled_repos.py feat: restructure Open SWE Review tab + wire create_prs (#1319) 2026-05-21 09:17:07 -07:00
message_adapter.py feat: support dashboard chat images (#1435) 2026-06-06 11:50:24 -07:00
oauth.py fix: use Slack OIDC mappings for Slack thread ownership (#1410) 2026-06-04 19:58:30 +00:00
options.py feat: add Claude Fable 5 as a supported model (#1467) 2026-06-09 10:59:26 -07:00
profiles.py fix: clearer Slack prompt for users who must sign in with GitHub (#1380) 2026-06-02 19:39:44 -07:00
repo_access.py feat: add scheduled web agents (#1422) 2026-06-05 02:20:24 +00:00
review_style_jobs.py feat: outcomes dataset + bootstrap/continual split via skills (#1365) 2026-06-01 13:25:12 -07:00
review_styles.py feat: outcomes dataset + bootstrap/continual split via skills (#1365) 2026-06-01 13:25:12 -07:00
routes.py feat: out-of-process usage-snapshot builder (Phase 1) (#1468) 2026-06-09 11:11:06 -07:00
schedules.py feat: add scheduled web agents (#1422) 2026-06-05 02:20:24 +00:00
slack_oauth.py feat: open Slack-triggered PRs as the triggering user (#1375) 2026-06-02 15:04:20 -07:00
team_settings.py feat: inject org-wide guidelines into reviewer prompt (#1431) 2026-06-05 13:49:30 -07:00
thread_api.py fix: revert dashboard stop run controls (#1461) 2026-06-08 21:47:53 -07:00
usage_snapshot_cron.py feat: out-of-process usage-snapshot builder (Phase 1) (#1468) 2026-06-09 11:11:06 -07:00
user_mappings.py fix: use Slack OIDC mappings for Slack thread ownership (#1410) 2026-06-04 19:58:30 +00:00