gabriel / musehub public
feat BREAKING stable task/stable-phase1 #1 / 1
AI Agent gabriel · 143 days ago · May 3, 2026 · Diff

feat(stable): Phase 1 — migration, pure SQL StableProvider, 28-test suite (issue #12)

sha256:cb50b7983115aff0427451b11f9838c380cbcde1e00ee04aa217182fe31b3ec8 sha
+70 ~3 symbols
sha256:cbf83b90f6a75f38b796a40bdaa245ac7c1931d71895816e97765a9ca4bf4993 snapshot
+70
symbols added
~3
symbols modified
0
dead code introduced
Semantic Changes 73 symbols
+ branch_labels variable variable branch_labels L21–21
+ depends_on variable variable depends_on L22–22
+ down_revision variable variable down_revision L20–20
+ downgrade function function downgrade L32–33
+ Sequence import import Sequence L14–14
+ Union import import Union L14–14
+ annotations import import annotations L12–12
+ op import import op L17–17
+ sa import import sa L16–16
+ revision variable variable revision L19–19
+ upgrade function function upgrade L25–29
~ tests/test_phase1_stable_provider.py .py 58 symbols added
+ TestDaysStableHelper class class TestDaysStableHelper L165–195
+ test_P1_01_none_returns_zero method method test_P1_01_none_returns_zero L168–170
+ test_P1_02_exactly_90_days_ago method method test_P1_02_exactly_90_days_ago L172–175
+ test_P1_03_future_timestamp_clamped_to_zero method method test_P1_03_future_timestamp_clamped_to_zero L177–180
+ test_P1_04_epoch_returns_large_positive method method test_P1_04_epoch_returns_large_positive L182–185
+ test_P1_05_naive_datetime_treated_as_utc method method test_P1_05_naive_datetime_treated_as_utc L187–190
+ test_P1_06_one_day_ago_returns_one method method test_P1_06_one_day_ago_returns_one L192–195
+ TestStableProviderDataIntegrity class class TestStableProviderDataIntegrity L508–586
+ test_P1_22_null_last_changed_excluded method async_method test_P1_22_null_last_changed_excluded L512–532
+ test_P1_23_nonzero_churn_90d_excluded method async_method test_P1_23_nonzero_churn_90d_excluded L535–556
+ test_P1_24_address_unique_per_repo method async_method test_P1_24_address_unique_per_repo L559–586
+ TestStableProviderE2E class class TestStableProviderE2E L351–416
+ test_P1_15_row_count_positive method async_method test_P1_15_row_count_positive L355–363
+ test_P1_16_days_stable_positive method async_method test_P1_16_days_stable_positive L366–379
+ test_P1_17_last_changed_commit_is_sha256_prefixed_or_none method async_method test_P1_17_last_changed_commit_is_sha256_prefixed_or_none L382–396
+ test_P1_18_since_start_only_when_lifetime_churn_zero method async_method test_P1_18_since_start_only_when_lifetime_churn_zero L399–416
+ TestStableProviderIntegration class class TestStableProviderIntegration L202–344
+ test_P1_07_stable_symbol_upserted method async_method test_P1_07_stable_symbol_upserted L206–220
+ test_P1_08_days_stable_value_correct method async_method test_P1_08_days_stable_value_correct L223–237
+ test_P1_09_since_start_true_for_zero_lifetime_churn method async_method test_P1_09_since_start_true_for_zero_lifetime_churn L240–254
+ test_P1_10_since_start_false_for_nonzero_lifetime_churn method async_method test_P1_10_since_start_false_for_nonzero_lifetime_churn L257–271
+ test_P1_11_last_changed_commit_populated method async_method test_P1_11_last_changed_commit_populated L274–288
+ test_P1_12_nonzero_churn_30d_excluded method async_method test_P1_12_nonzero_churn_30d_excluded L291–305
+ test_P1_13_rerun_updates_days_stable_in_place method async_method test_P1_13_rerun_updates_days_stable_in_place L308–324
+ test_P1_14_ref_column_updated_on_rerun method async_method test_P1_14_ref_column_updated_on_rerun L327–344
+ TestStableProviderPerformance class class TestStableProviderPerformance L593–642
+ test_P1_25_1000_row_batch_under_5s method async_method test_P1_25_1000_row_batch_under_5s L597–617
+ test_P1_26_second_run_all_conflicts_under_5s method async_method test_P1_26_second_run_all_conflicts_under_5s L620–642
+ TestStableProviderSecurity class class TestStableProviderSecurity L649–708
+ test_P1_27_sql_injection_in_address_stored_verbatim method async_method test_P1_27_sql_injection_in_address_stored_verbatim L653–680
+ test_P1_28_repo_isolation method async_method test_P1_28_repo_isolation L683–708
+ TestStableProviderStress class class TestStableProviderStress L423–501
+ test_P1_19_500_symbols_all_upserted method async_method test_P1_19_500_symbols_all_upserted L427–449
+ test_P1_20_no_duplicates_after_single_run method async_method test_P1_20_no_duplicates_after_single_run L452–474
+ test_P1_21_upsert_is_idempotent method async_method test_P1_21_upsert_is_idempotent L477–501
+ _OWNER variable variable _OWNER L42–42
+ _REF variable variable _REF L44–44
+ _REF2 variable variable _REF2 L45–45
+ _SLUG variable variable _SLUG L43–43
+ _seed_symbol function async_function _seed_symbol L48–105
+ _uid function function _uid L38–39
+ AsyncSession import import AsyncSession L26–26
+ StableProvider import import StableProvider L30–30
+ _days_stable_from_dt import import _days_stable_from_dt L30–30
+ annotations import import annotations L17–17
+ create_repo import import create_repo L31–31
+ datetime import import datetime L21–21
+ db import import db L29–29
+ fake_id import import fake_id L28–28
+ pg_insert import import pg_insert L25–25
+ pytest import import pytest L23–23
+ pytest_asyncio import import pytest_asyncio L24–24
+ secrets import import secrets L19–19
+ time import import time L20–20
+ timedelta import import timedelta L21–21
+ timezone import import timezone L21–21
+ stable_repo function async_function stable_repo L113–115
+ stable_repo_with_symbols function async_function stable_repo_with_symbols L119–158
~ musehub/services/musehub_intel_providers.py .py 1 symbol added, 2 symbols modified
+ _days_stable_from_dt function function _days_stable_from_dt L782–810
← Older Oldest on task/stable-phase1
All commits
Newer → Latest on task/stable-phase1

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:cb50b7983115aff0427451b11f9838c380cbcde1e00ee04aa217182fe31b3ec8 --body "your comment"