gabriel / musehub public
feat BREAKING dev
gabriel · 171 days ago · Apr 9, 2026 · Diff

feat: supercharge symbol index with full per-symbol intel

Add per_symbol_intel_json column (migration 0035) storing a complete dict of churn, churn_30d, churn_90d, blast radius, blast_top co-symbols, last_changed, last_author, gravity, and weekly sparkline for every indexed symbol address. Computed at push time in _compute_per_symbol_intel so issue detail pages serve all intel with zero per-request computation.

Replace the top-10 IntelSnapshot hotspot/blast lookup in issue_detail_page with lookup_symbol_intel — an O(1) read that covers any symbol regardless of ranking.

Update issue_detail.html to render the full intel panel: four metric cards, top co-changed symbols list, last-by / date / gravity meta row, and a 12- week activity sparkline. Stats strip now shows live aggregated blast radius and churn 30d totals from anchor_intel.

Update tests: remove close/reopen button and comment hx-post assertions (these were removed when we dropped MSign-incompatible humanism controls); replace with state badge and CLI card assertions.

sha256:f03ecfe173ef112de636227aa540fec0ad19d674d91860b930876850457920c6 sha
+15 ~5 −3 symbols
sha256:8379bfadf0f2b3036720e72d224b1ebce32402e772b053121526443eef1caeef snapshot
+15
symbols added
~5
symbols modified
−3
symbols removed
0
dead code introduced
Semantic Changes 23 symbols
+ branch_labels variable variable branch_labels L17–17
+ depends_on variable variable depends_on L18–18
+ down_revision variable variable down_revision L16–16
+ downgrade function function downgrade L28–29
+ op import import op L12–12
+ sa import import sa L13–13
+ revision variable variable revision L15–15
+ upgrade function function upgrade L21–25
~ musehub/services/musehub_symbol_indexer.py .py 4 symbols added, 3 symbols modified
+ _compute_per_symbol_intel function function _compute_per_symbol_intel L94–201
+ defaultdict import import defaultdict L24–24
+ timedelta import import timedelta L25–25
+ lookup_symbol_intel function async_function lookup_symbol_intel L558–577
~ tests/test_musehub_ui_issue_detail_ssr.py .py 3 symbols added, 3 symbols removed
− test_issue_detail_close_button_has_hx_post function async_function test_issue_detail_close_button_has_hx_post L250–262
− test_issue_detail_comment_form_has_hx_post function async_function test_issue_detail_comment_form_has_hx_post L235–246
− test_issue_detail_reopen_button_has_hx_post function async_function test_issue_detail_reopen_button_has_hx_post L266–278
+ test_issue_detail_cli_card_shown function async_function test_issue_detail_cli_card_shown L235–247
+ test_issue_detail_closed_state_shows_closed_badge function async_function test_issue_detail_closed_state_shows_closed_badge L267–278
+ test_issue_detail_open_state_shows_open_badge function async_function test_issue_detail_open_state_shows_open_badge L251–263
← Older Oldest on dev
All commits
Newer → Latest on dev

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:f03ecfe173ef112de636227aa540fec0ad19d674d91860b930876850457920c6 --body "your comment"