From 93a2df6749c91f71e75e32e3997ea4b787e86759 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 20:14:43 -0300 Subject: [PATCH 1/8] raise stocks endpoint cache ttl to six hours --- main/controller/stocksapi_controller.py | 24 +++++++++++++------- tests/test_stocks_api_cache_ttl.py | 29 +++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 tests/test_stocks_api_cache_ttl.py diff --git a/main/controller/stocksapi_controller.py b/main/controller/stocksapi_controller.py index 8bdfea9e..c1d27fc2 100644 --- a/main/controller/stocksapi_controller.py +++ b/main/controller/stocksapi_controller.py @@ -16,6 +16,14 @@ cache.setup("mem://") +# Endpoint cache TTLs. STOCKS_TTL must stay <= STALE_AFTER_SECONDS (cache.py) — a cached +# body may never outlive the app's own staleness policy. The *_MAX_AGE values are the +# same durations in seconds, for the Cache-Control header only. +STOCKS_TTL = "6h" +STOCKS_MAX_AGE = 6 * 3600 +LIVE_TTL = "15s" +LIVE_MAX_AGE = 15 + router = APIRouter(prefix="/stocks", tags=["Stocks API"]) @@ -81,7 +89,7 @@ def listFields(): @router.get("/historical", operation_id="get_historical", response_class=ORJSONResponse) -@endpointCache(ttl="1h", key="stocks:historical:{search}:{fields}:{dates}:{orderBy}:{limit}:{compact}") +@endpointCache(ttl=STOCKS_TTL, key="stocks:historical:{search}:{fields}:{dates}:{orderBy}:{limit}:{compact}") def getHistorical( response: Response, search: str = Query(None, max_length=3780, pattern=r"^[A-Za-z0-9,\s]*$"), @@ -138,7 +146,7 @@ def getHistorical( - Get PETR4 net income 2022-2024: search="PETR4", fields="LUCRO LIQUIDO", dates="2022,2024" - Get all revenue data for VALE3: search="VALE3", fields="RECEITA LIQUIDA" - Compare top 10 by EBITDA: fields="EBITDA", orderBy="EBITDA", limit=10""" - response.headers["Cache-Control"] = "public, max-age=300" + response.headers["Cache-Control"] = f"public, max-age={STOCKS_MAX_AGE}" result = queryHistorical(search, fields, dates, orderBy, limit) if compact: result = compressResponse(result, "get_historical", {"search": search, "fields": fields, "dates": dates}) @@ -146,7 +154,7 @@ def getHistorical( @router.get("/fundamental", operation_id="get_fundamental", response_class=ORJSONResponse) -@endpointCache(ttl="5m", key="stocks:fundamental:{search}:{fields}:{dates}:{orderBy}:{limit}:{compact}") +@endpointCache(ttl=STOCKS_TTL, key="stocks:fundamental:{search}:{fields}:{dates}:{orderBy}:{limit}:{compact}") def getFundamental( response: Response, search: str = Query(None, max_length=3780, pattern=r"^[A-Za-z0-9,\s]*$"), @@ -208,7 +216,7 @@ def getFundamental( - Get all stocks' dividend yield latest: fields="DY" - Compare P/L across tickers: search="PETR4,VALE3,ITUB4", fields="P/L", orderBy="P/L" - Q1 2024 fundamental snapshot: fields="P/L,ROE", dates="2024-01-01,2024-03-31" """ - response.headers["Cache-Control"] = "public, max-age=300" + response.headers["Cache-Control"] = f"public, max-age={STOCKS_MAX_AGE}" result = queryFundamental(search, fields, dates, orderBy, limit) if compact: result = compressResponse(result, "get_fundamental", {"search": search, "fields": fields, "dates": dates}) @@ -216,7 +224,7 @@ def getFundamental( @router.get("/cotations", operation_id="get_cotations", response_class=ORJSONResponse) -@endpointCache(ttl="5m", key="stocks:cotations:{search}:{dates}:{adjusted}:{compact}") +@endpointCache(ttl=STOCKS_TTL, key="stocks:cotations:{search}:{dates}:{adjusted}:{compact}") def getCotations( response: Response, search: str = Query(..., min_length=1, max_length=3780, pattern=r"^[A-Za-z0-9,\s]*$"), @@ -264,7 +272,7 @@ def getCotations( - Get PETR4 full price history: search="PETR4" - Get PETR4 + VALE3 2023 prices: search="PETR4,VALE3", dates="2023-01-01,2023-12-31" - Get inflation-adjusted prices: search="ITUB4", adjusted=true""" - response.headers["Cache-Control"] = "public, max-age=300" + response.headers["Cache-Control"] = f"public, max-age={STOCKS_MAX_AGE}" result = queryCotations(search, dates, adjusted) if compact: result = compressResponse(result, "get_cotations", {"search": search, "dates": dates}) @@ -272,7 +280,7 @@ def getCotations( @router.get("/cotations/live", operation_id="get_live_price", response_class=ORJSONResponse) -@endpointCache(ttl="15s", key="stocks:live:{search}:{compact}") +@endpointCache(ttl=LIVE_TTL, key="stocks:live:{search}:{compact}") def getLiveCotation( response: Response, search: str = Query(..., min_length=1, max_length=7, pattern=r"^[A-Za-z0-9,\s]*$"), @@ -309,7 +317,7 @@ def getLiveCotation( - Only one ticker per request (max 7 chars for the search param). - Real-time data is only available during B3 market hours (10:00-17:30 BRT). - Outside market hours, returns the last available closing price.""" - response.headers["Cache-Control"] = "public, max-age=15" + response.headers["Cache-Control"] = f"public, max-age={LIVE_MAX_AGE}" result = queryLiveCotation(search) if compact: result = compressResponse(result, "get_live_price", {"search": search}) diff --git a/tests/test_stocks_api_cache_ttl.py b/tests/test_stocks_api_cache_ttl.py new file mode 100644 index 00000000..e0ff5c20 --- /dev/null +++ b/tests/test_stocks_api_cache_ttl.py @@ -0,0 +1,29 @@ +import re + +from main.app.stocks_api.cache import STALE_AFTER_SECONDS +from main.controller import stocksapi_controller as mod + + +def _seconds(ttl: str) -> int: + match = re.fullmatch(r"(\d+)([smhd])", ttl) + assert match, f"unparseable ttl: {ttl}" + value, unit = match.groups() + return int(value) * {"s": 1, "m": 60, "h": 3600, "d": 86400}[unit] + + +def test_long_endpoints_share_one_six_hour_constant(): + assert mod.STOCKS_TTL == "6h" + assert _seconds(mod.STOCKS_TTL) == 6 * 3600 + + +def test_cache_control_max_age_matches_the_decorator_ttl(): + assert mod.STOCKS_MAX_AGE == _seconds(mod.STOCKS_TTL) + assert mod.LIVE_MAX_AGE == _seconds(mod.LIVE_TTL) + + +def test_endpoint_ttl_never_exceeds_the_staleness_policy(): + assert _seconds(mod.STOCKS_TTL) <= STALE_AFTER_SECONDS + + +def test_live_ttl_is_not_widened(): + assert mod.LIVE_TTL == "15s" From 35503db0c80951eebda318f3907de6338b4ae04a Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 20:16:58 -0300 Subject: [PATCH 2/8] cache stocks fields endpoint --- main/controller/stocksapi_controller.py | 7 ++-- tests/test_stocks_api_cache_ttl.py | 51 +++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/main/controller/stocksapi_controller.py b/main/controller/stocksapi_controller.py index c1d27fc2..135f48a5 100644 --- a/main/controller/stocksapi_controller.py +++ b/main/controller/stocksapi_controller.py @@ -16,9 +16,6 @@ cache.setup("mem://") -# Endpoint cache TTLs. STOCKS_TTL must stay <= STALE_AFTER_SECONDS (cache.py) — a cached -# body may never outlive the app's own staleness policy. The *_MAX_AGE values are the -# same durations in seconds, for the Cache-Control header only. STOCKS_TTL = "6h" STOCKS_MAX_AGE = 6 * 3600 LIVE_TTL = "15s" @@ -43,7 +40,8 @@ def health(): @router.get("/fields", operation_id="list_fields") -def listFields(): +@endpointCache(ttl=STOCKS_TTL, key="stocks:fields") +def listFields(response: Response): """Discover available field names before querying /historical or /fundamental. IMPORTANT: Call this tool FIRST to get exact field names. Do NOT guess field names — @@ -85,6 +83,7 @@ def listFields(): abbreviations = generateAbbreviations(historical, fundamental) nested = getNest() + response.headers["Cache-Control"] = f"public, max-age={STOCKS_MAX_AGE}" return {"historical": historical, "fundamental": fundamental, "abbreviations": abbreviations, "nested": nested} diff --git a/tests/test_stocks_api_cache_ttl.py b/tests/test_stocks_api_cache_ttl.py index e0ff5c20..b1ad726d 100644 --- a/tests/test_stocks_api_cache_ttl.py +++ b/tests/test_stocks_api_cache_ttl.py @@ -1,4 +1,12 @@ +import asyncio import re +from types import SimpleNamespace + +import pandas as pd +import pytest +import pytest_asyncio +from cashews import cache as cashewsCache +from fastapi import Response from main.app.stocks_api.cache import STALE_AFTER_SECONDS from main.controller import stocksapi_controller as mod @@ -27,3 +35,46 @@ def test_endpoint_ttl_never_exceeds_the_staleness_policy(): def test_live_ttl_is_not_widened(): assert mod.LIVE_TTL == "15s" + + +@pytest_asyncio.fixture(scope="module", loop_scope="module", autouse=True) +async def setup_cache(): + cashewsCache.setup("mem://") + yield + await cashewsCache.clear() + + +def _flush(): + asyncio.run(cashewsCache.clear()) + + +def test_fields_second_call_is_a_cache_hit(monkeypatch): + _flush() + calls = [] + + def fakeCategorize(cols): + calls.append(tuple(cols)) + return {"A": [2024]}, ["P/L"] + + monkeypatch.setattr(mod, "categorizeColumns", fakeCategorize) + monkeypatch.setattr(mod, "generateAbbreviations", lambda historical, fundamental: {"A": "A"}) + monkeypatch.setattr(mod, "getNest", lambda: {}) + monkeypatch.setattr(mod, "stocksCache", SimpleNamespace(STOCKS_CACHE=pd.DataFrame({"TICKER": ["PETR4"]}))) + + response = Response() + first = mod.listFields(response) + second = mod.listFields(Response()) + + assert first == second + assert calls == [("TICKER",)] # computed once; the second call is a cache hit + assert response.headers["Cache-Control"] == f"public, max-age={mod.STOCKS_MAX_AGE}" + + +def test_fields_503_is_not_cached(monkeypatch): + _flush() + monkeypatch.setattr(mod, "stocksCache", SimpleNamespace(STOCKS_CACHE=None)) + + for _ in range(2): + with pytest.raises(mod.HTTPException) as exc: + mod.listFields(Response()) + assert exc.value.status_code == 503 From ef70a7a3430dab742e8bd048919ef13d989030d5 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 20:18:50 -0300 Subject: [PATCH 3/8] invalidate endpoint cache on feather reload --- main/app/stocks_api/cache.py | 2 ++ main/app/stocks_api/sync_cache.py | 5 +++++ tests/test_stocks_api_cache_ttl.py | 22 ++++++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/main/app/stocks_api/cache.py b/main/app/stocks_api/cache.py index 07fa62b4..97e5c6f9 100644 --- a/main/app/stocks_api/cache.py +++ b/main/app/stocks_api/cache.py @@ -249,8 +249,10 @@ def loadFromFeather(self): self.lastCacheUpdate = datetime.now(timezone.utc) from main.app.stocks_api.compress import rebuildAbbrevs + from main.app.stocks_api.sync_cache import clearEndpointCache rebuildAbbrevs() + clearEndpointCache() logger.info(f"Stocks cache loaded from feather ({len(df)} records, {len(newTickerIndex)} tickers)") diff --git a/main/app/stocks_api/sync_cache.py b/main/app/stocks_api/sync_cache.py index f625175c..fd7e11fc 100644 --- a/main/app/stocks_api/sync_cache.py +++ b/main/app/stocks_api/sync_cache.py @@ -32,3 +32,8 @@ async def cachedCall() -> Any: return wrapper # type: ignore[return-value] return decorator + + +def clearEndpointCache() -> None: + """Drop every cached endpoint body — called when the feather frame is replaced.""" + asyncio.run(cashewsCache.clear()) diff --git a/tests/test_stocks_api_cache_ttl.py b/tests/test_stocks_api_cache_ttl.py index b1ad726d..4ad743ab 100644 --- a/tests/test_stocks_api_cache_ttl.py +++ b/tests/test_stocks_api_cache_ttl.py @@ -1,5 +1,6 @@ import asyncio import re +from pathlib import Path from types import SimpleNamespace import pandas as pd @@ -8,6 +9,7 @@ from cashews import cache as cashewsCache from fastapi import Response +from main.app.stocks_api import cache as cache_mod from main.app.stocks_api.cache import STALE_AFTER_SECONDS from main.controller import stocksapi_controller as mod @@ -78,3 +80,23 @@ def test_fields_503_is_not_cached(monkeypatch): with pytest.raises(mod.HTTPException) as exc: mod.listFields(Response()) assert exc.value.status_code == 503 + + +def test_feather_reload_drops_cached_bodies(monkeypatch): + _flush() + asyncio.run(cashewsCache.set("stocks:fields", {"probe": True}, expire=3600)) + assert asyncio.run(cashewsCache.get("stocks:fields", default=None)) == {"probe": True} + + # keep the reload cheap: no real feather file, no abbreviation rebuild + monkeypatch.setattr(cache_mod, "readFeatherDataFrame", lambda path: (pd.DataFrame({"TICKER": ["PETR4"]}), True)) + monkeypatch.setattr(cache_mod, "CACHE_NESTED_PATH", Path("missing.feather")) + monkeypatch.setattr("main.app.stocks_api.compress.rebuildAbbrevs", lambda: None) + + manager = cache_mod.stocksCache + saved = (manager.STOCKS_CACHE, manager.tickerIndex, manager.nestedSample, manager.lastCacheUpdate) + try: + manager.loadFromFeather() + finally: + manager.STOCKS_CACHE, manager.tickerIndex, manager.nestedSample, manager.lastCacheUpdate = saved + + assert asyncio.run(cashewsCache.get("stocks:fields", default=None)) is None From 679c3dfccf596dfcedaeda2c9fd39bab574ca233 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 20:41:31 -0300 Subject: [PATCH 4/8] hoist deferred imports to module top --- main/app/stocks_api/cache.py | 8 +++----- main/app/stocks_api/compress.py | 14 +++++++------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/main/app/stocks_api/cache.py b/main/app/stocks_api/cache.py index 97e5c6f9..17d8d41d 100644 --- a/main/app/stocks_api/cache.py +++ b/main/app/stocks_api/cache.py @@ -23,6 +23,7 @@ from typing import Any from main.utils.scheduler import registerJob +from main.app.stocks_api import compress, sync_cache fcntl: Any = None if sys.platform != "win32": @@ -248,11 +249,8 @@ def loadFromFeather(self): self.nestedSample = nestedSample self.lastCacheUpdate = datetime.now(timezone.utc) - from main.app.stocks_api.compress import rebuildAbbrevs - from main.app.stocks_api.sync_cache import clearEndpointCache - - rebuildAbbrevs() - clearEndpointCache() + compress.rebuildAbbrevs() + sync_cache.clearEndpointCache() logger.info(f"Stocks cache loaded from feather ({len(df)} records, {len(newTickerIndex)} tickers)") diff --git a/main/app/stocks_api/compress.py b/main/app/stocks_api/compress.py index 09e38738..4d1374b8 100644 --- a/main/app/stocks_api/compress.py +++ b/main/app/stocks_api/compress.py @@ -4,7 +4,7 @@ from functools import lru_cache from typing import Any -from main.app.stocks_api.cache import stocksCache +from main.app.stocks_api import cache from main.app.stocks_api.util import generateAbbreviations, categorizeColumns, detectNestedFields PRICE = { @@ -21,18 +21,18 @@ @lru_cache(maxsize=1) def getAbbr() -> dict: - if stocksCache.STOCKS_CACHE is not None: - h, f = categorizeColumns(stocksCache.STOCKS_CACHE.columns.tolist()) + if cache.stocksCache.STOCKS_CACHE is not None: + h, f = categorizeColumns(cache.stocksCache.STOCKS_CACHE.columns.tolist()) return generateAbbreviations(h, f) return {"meta": {"TICKER": "TK", "NOME": "NM", "TIME": "TI"}, "historical": {}, "fundamental": {}} @lru_cache(maxsize=1) def getNest() -> dict: - if stocksCache.STOCKS_CACHE is not None: - nest = detectNestedFields(stocksCache.STOCKS_CACHE) - if stocksCache.nestedSample is not None: - for col, info in detectNestedFields(stocksCache.nestedSample).items(): + if cache.stocksCache.STOCKS_CACHE is not None: + nest = detectNestedFields(cache.stocksCache.STOCKS_CACHE) + if cache.stocksCache.nestedSample is not None: + for col, info in detectNestedFields(cache.stocksCache.nestedSample).items(): nest.setdefault(col, info) return nest return {} From 3e2a330c5c7ebebde0b7c6bf59c4318e6cee3067 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 20:48:37 -0300 Subject: [PATCH 5/8] introspect and readme --- README.md | 1 - TODO.md | 17 + graphify-out/.graphify_labels.json | 17 +- graphify-out/GRAPH_REPORT.md | 524 +- graphify-out/graph.json | 14727 +++++++++++++++++------- graphify-out/manifest.json | 109 +- main/app/authentication/introspect.py | 14 +- 7 files changed, 11151 insertions(+), 4258 deletions(-) diff --git a/README.md b/README.md index 04f30ba5..8e0ccc1e 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,6 @@ USER_ENABLED=TRUE USER_HOST=localhost USER_PORT=3200 JWT_SECRET_KEY=key -SESSION_SECRET_KEY=key GOOGLE_CLIENT.ID=key GOOGLE_CLIENT.SECRET=key GOOGLE_REDIRECT.URI=http://localhost:3200/auth/callback diff --git a/TODO.md b/TODO.md index 66ec2325..654fa67d 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1,20 @@ +## Priorities (active order, 2026-09-29) + +1. **Cache TTL** — endpoint/response cache lifetimes (historical 1h, fundamental/cotations 5m, live 15s) and the app-layer TTL increase as the cheap first perf step. + - Plan: `docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md` + - Alt/related: `docs/superpowers/plans/2026-09-29-nginx-response-cache.md` +2. **nginx scaling** — one box, nginx in front, per-service routing and tailored configs so only the required services boot (remote VPS support). Draft plan + design spec. + - Draft: `docs/superpowers/nginx-scaling-plan.md` + - Design: `docs/superpowers/specs/2026-09-29-nginx-scaling-design.md` +3. **Wallet system (Iyagba)** — portfolio/wallet management for users. + - Spec: `docs/superpowers/investidor10-wallet-spec.md` + - Research: `docs/superpowers/investidor10-wallet-research.md` +4. **uvicorn scaling** — multi-process workers without duplicating the feather in RAM. Blocked on the B1–B6 change inventory; not ready to execute until the phase boundary and edge rate-limit decisions are made. + - Planning doc: `docs/superpowers/uvicorn-worker-scaling-plan.md` + - Implementation: `docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md` + +--- + - [ ] Github OAuth - [ ] Implement an user management system so the user can customize its name, change password, profile picture and settings - [ ] Make an Password Recovery system and 2FA using the Email Protocol diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index 2d2d65d6..c8f8b7a3 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -575,14 +575,29 @@ "573": "Community 573", "574": "Community 574", "575": "Community 575", + "576": "Community 576", "577": "Community 577", + "578": "Community 578", + "579": "Community 579", "580": "Community 580", "581": "Community 581", "582": "Community 582", "583": "Community 583", "584": "Community 584", + "585": "Community 585", + "586": "Community 586", "587": "Community 587", + "588": "Community 588", + "589": "Community 589", "590": "Community 590", + "591": "Community 591", + "592": "Community 592", + "593": "Community 593", + "594": "Community 594", "595": "Community 595", - "596": "Community 596" + "596": "Community 596", + "597": "Community 597", + "598": "Community 598", + "603": "Community 603", + "605": "Community 605" } diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 4c481c3a..c7fbe62f 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - server (2026-09-29) ## Corpus Check -- 127 files · ~77,655 words +- 134 files · ~102,971 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 6269 nodes · 8527 edges · 586 communities (355 shown, 231 thin omitted) -- Extraction: 84% EXTRACTED · 16% INFERRED · 0% AMBIGUOUS · INFERRED: 1328 edges (avg confidence: 0.69) +- 6628 nodes · 8877 edges · 601 communities (374 shown, 227 thin omitted) +- Extraction: 85% EXTRACTED · 15% INFERRED · 0% AMBIGUOUS · INFERRED: 1329 edges (avg confidence: 0.69) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `09a23108` +- Built from commit: `679c3dfc` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -516,6 +516,7 @@ - [[_COMMUNITY_Community 508|Community 508]] - [[_COMMUNITY_Community 509|Community 509]] - [[_COMMUNITY_Community 510|Community 510]] +- [[_COMMUNITY_Community 511|Community 511]] - [[_COMMUNITY_Community 512|Community 512]] - [[_COMMUNITY_Community 517|Community 517]] - [[_COMMUNITY_Community 518|Community 518]] @@ -576,16 +577,31 @@ - [[_COMMUNITY_Community 573|Community 573]] - [[_COMMUNITY_Community 574|Community 574]] - [[_COMMUNITY_Community 575|Community 575]] +- [[_COMMUNITY_Community 576|Community 576]] - [[_COMMUNITY_Community 577|Community 577]] +- [[_COMMUNITY_Community 578|Community 578]] +- [[_COMMUNITY_Community 579|Community 579]] - [[_COMMUNITY_Community 580|Community 580]] - [[_COMMUNITY_Community 581|Community 581]] - [[_COMMUNITY_Community 582|Community 582]] - [[_COMMUNITY_Community 583|Community 583]] - [[_COMMUNITY_Community 584|Community 584]] +- [[_COMMUNITY_Community 585|Community 585]] +- [[_COMMUNITY_Community 586|Community 586]] - [[_COMMUNITY_Community 587|Community 587]] +- [[_COMMUNITY_Community 588|Community 588]] +- [[_COMMUNITY_Community 589|Community 589]] - [[_COMMUNITY_Community 590|Community 590]] +- [[_COMMUNITY_Community 591|Community 591]] +- [[_COMMUNITY_Community 592|Community 592]] +- [[_COMMUNITY_Community 593|Community 593]] +- [[_COMMUNITY_Community 594|Community 594]] - [[_COMMUNITY_Community 595|Community 595]] - [[_COMMUNITY_Community 596|Community 596]] +- [[_COMMUNITY_Community 597|Community 597]] +- [[_COMMUNITY_Community 598|Community 598]] +- [[_COMMUNITY_Community 603|Community 603]] +- [[_COMMUNITY_Community 605|Community 605]] ## God Nodes (most connected - your core abstractions) 1. `vocab` - 456 edges @@ -606,10 +622,10 @@ main/app/stocks_api/cache.py → tests/test_stocks_api_coverage.py - `StocksCacheManager` --calls--> `test_cache_scheduler_starts_daemon_thread()` [INFERRED] main/app/stocks_api/cache.py → tests/test_stocks_api_coverage.py -- `DiscordHandler` --uses--> `TestSetupLogging` [INFERRED] - main/utils/logging_config.py → tests/test_logging_config_coverage.py - `HarnessState` --uses--> `TestGetState` [INFERRED] main/app/prometheus/state.py → tests/test_state_tools.py +- `HarnessState` --uses--> `TestSetState` [INFERRED] + main/app/prometheus/state.py → tests/test_state_tools.py ## Hyperedges (group relationships) - **Authentication Module** — AuthenticationManager, SessionManager, auth_util, auth_constants, getGoogleSSO [INFERRED] @@ -619,7 +635,7 @@ - **Configuration & Database Infrastructure** — config_Config, config_engine, config_stocksEngine [INFERRED] - **User Authentication & Authorization** — user_service, authentication, user_roles, permission_system [INFERRED] -## Communities (586 total, 231 thin omitted) +## Communities (601 total, 227 thin omitted) ### Community 0 - "Stocks API Endpoints" Cohesion: 0.0 @@ -634,8 +650,8 @@ Cohesion: 0.13 Nodes (21): Thin async wrapper around the CubeSandbox/E2B HTTP API. All methods are sta, SandboxManager, _mock_forgevm(), Unit tests for SandboxManager — HTTP calls mocked via a fake client class., Wire up mock forgevm AsyncClient that returns sandbox with all methods., Wire up mock forgevm AsyncClient that returns sandbox with all methods., test_create_sandbox(), test_destroy_sandbox() (+13 more) ### Community 3 - "Prometheus Agent" -Cohesion: 0.11 -Nodes (12): _make_stocks_df(), Return a small DataFrame with the columns the query module expects., Return a small DataFrame with the columns the query module expects., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48. (+4 more) +Cohesion: 0.1 +Nodes (16): _make_stocks_df(), Return a small DataFrame with the columns the query module expects., Return a small DataFrame with the columns the query module expects., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48. (+8 more) ### Community 4 - "Data Models & Types" Cohesion: 0.11 @@ -662,20 +678,20 @@ Cohesion: 0.11 Nodes (17): code:python (def filterCotationColumn(series: pd.Series, startDate, endDa), code:bash (git add -A), code:bash (git add main/app/stocks_api/query.py), code:python (def buildCotationDateIndex(df: pd.DataFrame, col: str = "COT), code:python (def filterCotationColumn(series: pd.Series, startDate, endDa), code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que), code:python (PARQUET_PATH = Path(__file__).parent / "stocks_cache.parquet), code:bash (git add main/app/stocks_api/cache.py) (+9 more) ### Community 10 - "Prometheus Memory" -Cohesion: 0.05 -Nodes (35): Tests for queryCotations and /stocks/cotations., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, Tests for queryCotations and /stocks/cotations., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list., dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list. (+27 more) +Cohesion: 0.06 +Nodes (27): Tests for queryCotations and /stocks/cotations., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, Tests for queryCotations and /stocks/cotations., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list., dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list. (+19 more) ### Community 11 - "Auth Utilities & SSO" Cohesion: 0.05 Nodes (42): Code Review Report — Final, H1. Session Cookies Over HTTP, H2. Service → Controller Layer Violations, H3. Bare `except:` Blocks in Scraper, H4. Full DataFrame Copy Per Request, H5. Missing Database Indexes, H6. Scraper N+1 HTTP Pattern, H7. Raw `SessionLocal()` Bypassing DI (+34 more) ### Community 12 - "Frontend App Shell" -Cohesion: 0.06 -Nodes (18): LoopEvent, LoopEvent model for observable agent loops., LoopLogger, LoopLogger — batched event logging for observable agent loops., Queue events during a loop, flush to DB at end., Log a generic event with optional metadata., Log a tool invocation., Log end of a turn with timing. (+10 more) +Cohesion: 0.08 +Nodes (13): LoopEvent, LoopEvent model for observable agent loops., LoopLogger, LoopLogger — batched event logging for observable agent loops., Queue events during a loop, flush to DB at end., Log a generic event with optional metadata., Log a tool invocation., Log end of a turn with timing. (+5 more) ### Community 13 - "Prometheus Tools" -Cohesion: 0.13 -Nodes (21): benchOnce(), main(), fullTextSearch(), minMax(), scoreCandidates(), scoreRecency(), scoreRow(), search() (+13 more) +Cohesion: 0.06 +Nodes (31): code:python ("""Measure whether the stocks query hot path is GIL-bound.), code:bash (git add main/utils/migrator.py tests/test_migrator_guard.py), code:python (import importlib), code:python (DB_POOL_SIZE = int(os.getenv("DB_POOL_SIZE", "20"))), code:bash (git add config.py tests/test_config_pools.py), code:python (import importlib), code:python (if __name__ == "__main__":), code:python (if len(instances) > 1 and fcntl is None: # pragma: no cover) (+23 more) ### Community 14 - "User Roles & Permissions" Cohesion: 0.05 @@ -686,12 +702,12 @@ Cohesion: 0.05 Nodes (38): code:block1 (User 123: "Analyze PETR4 vs VALE3 correlation"), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (TOOL_REGISTRY: dict[str, Any] = {), code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool), code:python (import pytest), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (async def streamMessage(self, query=None, sessionId=None, db), code:python (## Code Sandbox (On-Demand)) (+30 more) ### Community 16 - "Community 16" -Cohesion: 0.07 -Nodes (24): Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 111-112: sessionId is None, new session created., Covers lines 111-112: sessionId is None, new session created., Covers lines 109-136: POST /prometheus/chat/stream (SSE)., Covers lines 118-119: sessionId is None, new session created., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 114-115, 117-120, 122: existing session with verified ownership. (+16 more) +Cohesion: 0.08 +Nodes (20): executeStateTool(), get_state(), Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, test_get_state_no_state_returns_error(), test_dispatch_get_state() (+12 more) ### Community 17 - "Community 17" -Cohesion: 0.11 -Nodes (17): Multiple search terms with tickerIndex., Multiple search terms with tickerIndex., Multiple search terms with tickerIndex., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., Multiple search terms with tickerIndex., Multiple search terms with tickerIndex. (+9 more) +Cohesion: 0.07 +Nodes (25): Two dates in the range, both valid., Two dates in the range, both valid., Two dates in the range, both valid., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., search.strip() == '' should still dedup (line 181)., Search with no index match falls back to string startswith., Two dates in the range, both valid. (+17 more) ### Community 18 - "Community 18" Cohesion: 0.07 @@ -706,12 +722,12 @@ Cohesion: 0.06 Nodes (35): 1. Memory System (B+), 2. Summarizer/Episodes (B), 3. Loop Events (A-), 4. Core Architecture (B+), 5. Security (B+), 6. Performance (B), 7. Code Quality (B), After (B+) (+27 more) ### Community 21 - "Community 21" -Cohesion: 0.12 -Nodes (4): B3Scraper, getCurrentSelic(), getInitialData(), calculateInvestingScore() +Cohesion: 0.14 +Nodes (3): getCurrentSelic(), getInitialData(), calculateInvestingScore() ### Community 22 - "Community 22" -Cohesion: 0.1 -Nodes (13): filterCotationColumn(), Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., GET /cotations without search returns 422., GET /cotations without search returns 422. (+5 more) +Cohesion: 0.14 +Nodes (7): filterCotationColumn(), Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., TestQueryLiveCotation ### Community 23 - "Community 23" Cohesion: 0.07 @@ -726,16 +742,16 @@ Cohesion: 0.06 Nodes (13): Tests for input validation via HTTP endpoints. Validation is now inline via Bod, PUT /prometheus/sessions/{sessionId} — validates title via Body(...), POST /prometheus/chat/stream — validates query via Body(...), POST /auth/register — validates username, email, password via Body(...), Test that endpoints reject requests with missing required fields., POST /auth/login — validates username, password via Body(...), POST /prometheus/sessions — validates title via Body(...), TestChatValidation (+5 more) ### Community 26 - "Community 26" -Cohesion: 0.08 -Nodes (27): _hash_key(), hashKey(), Return SHA-256 hex digest of the given key., dbSession(), Tests for atomic API key quota enforcement (race condition fix). Verifies tha, Test that concurrent requests are properly serialized at DB level. Th, Test edge case: request exactly at quota limit., Test edge case: request exactly at quota limit. (+19 more) +Cohesion: 0.12 +Nodes (20): createKey(), _hash_key(), hashKey(), Return SHA-256 hex digest of the given key., Test that concurrent requests are properly serialized at DB level. Th, Test edge case: request exactly at quota limit., Test edge case: request exactly at quota limit., Test that increment works from zero usage. (+12 more) ### Community 27 - "Community 27" Cohesion: 0.15 Nodes (15): getUserMemories(), getRelevanceScore(), _FakeMemory, A memory with no lastAccessedAt should use baseScore as-is., Scores are deterministic — no cron mutation needed., Same memory at different points in time yields different scores., A memory accessed 10x (baseScore 1.0) should still outrank a memory acce, A rarely-used old memory should lose to a popular fresh one. (+7 more) ### Community 28 - "Community 28" -Cohesion: 0.05 -Nodes (42): Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Pass field name WITHOUT year (how categorizeColumns returns them)., Pass field name WITHOUT year (how categorizeColumns returns them)., No historical data columns -> inner 400 caught by outer except -> 500., Pass field name WITHOUT year (how categorizeColumns returns them). (+34 more) +Cohesion: 0.06 +Nodes (34): Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Pass field name WITHOUT year (how categorizeColumns returns them)., Pass field name WITHOUT year (how categorizeColumns returns them)., No historical data columns -> inner 400 caught by outer except -> 500., Pass field name WITHOUT year (how categorizeColumns returns them). (+26 more) ### Community 29 - "Community 29" Cohesion: 0.08 @@ -754,8 +770,8 @@ Cohesion: 0.11 Nodes (12): ToolContext — bundles all dependencies for tool execution. Replace passing user, Single dependency bundle for tool execution. Created once per request in ag, Extract userId from user dict if not explicitly set., ToolContext, Unit tests for ToolContext dataclass., Dataclass equality works out of the box., Explicit userId takes precedence over user dict., Two contexts share no mutable defaults. (+4 more) ### Community 33 - "Community 33" -Cohesion: 0.12 -Nodes (13): BaseHTTPMiddleware, Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter, TestSuccessPassthrough (+5 more) +Cohesion: 0.06 +Nodes (23): BaseHTTPMiddleware, app(), Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter (+15 more) ### Community 34 - "Community 34" Cohesion: 0.11 @@ -778,8 +794,8 @@ Cohesion: 0.07 Nodes (27): code:json ([), code:javascript (const loadHistory = async (sid) => {), code:jsx (export default function MessageList({ messages, toolEvents, ), code:javascript (const loadHistory = async (sid) => {), code:jsx (export default function AgentLoop({ toolEvents, turnMetrics ), code:bash (git add frontend/src/App.jsx frontend/src/components/Message), code:bash (docker-compose up -d --build), code:sql (SELECT COUNT(*) FROM prometheus WHERE JSON_CONTAINS_PATH(his) (+19 more) ### Community 39 - "Community 39" -Cohesion: 0.05 -Nodes (40): Invalid date -> inner 400 passes through (not wrapped as 500)., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., search.strip() == '' should still dedup (line 181)., search.strip() == '' should still dedup (line 181)., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500. (+32 more) +Cohesion: 0.08 +Nodes (24): search.strip() == '' should still dedup (line 181)., search.strip() == '' should still dedup (line 181)., search.strip() == '' should still dedup (line 181)., DataFrame without TIME column., Invalid date -> inner 400 caught by outer except -> 500., DataFrame without TIME column., DataFrame without TIME column., search.strip() == '' should still dedup (line 181). (+16 more) ### Community 40 - "Community 40" Cohesion: 0.12 @@ -790,24 +806,24 @@ Cohesion: 0.07 Nodes (32): API endpoints, Authentication Management, code:bash (curl http://localhost:3200/auth/health), code:bash (curl -X POST "http://localhost:3200/auth/register" \), code:bash (curl -X POST "http://localhost:3200/auth/login" \), code:bash (curl -X POST "http://localhost:3200/auth/logout" \), code:bash (# Browser redirect; redirect_url optional, else Referer head), code:mermaid (graph TD) (+24 more) ### Community 42 - "Community 42" -Cohesion: 0.09 -Nodes (16): StocksCacheManager, Tests for dynamic ticker index feature, Ticker index should be built when cache is loaded, Ticker index should contain all tickers from cache, Ticker index should be case-insensitive, Looking up ticker should return valid row index, Ticker index should be rebuilt when cache refreshes, TestTickerIndex (+8 more) +Cohesion: 0.16 +Nodes (8): StocksCacheManager, Tests for dynamic ticker index feature, Ticker index should be built when cache is loaded, Ticker index should contain all tickers from cache, Ticker index should be case-insensitive, Looking up ticker should return valid row index, Ticker index should be rebuilt when cache refreshes, TestTickerIndex ### Community 43 - "Community 43" -Cohesion: 0.11 -Nodes (10): Authentication System, createUserAccount(), createAccessToken(), hashPassword(), verifyPassword(), Google OAuth, JWT Authentication, TestAuthUtil (+2 more) +Cohesion: 0.12 +Nodes (9): Authentication System, createAccessToken(), hashPassword(), verifyPassword(), Google OAuth, JWT Authentication, TestAuthUtil, TestAuthUtilEdgeCases (+1 more) ### Community 44 - "Community 44" Cohesion: 0.14 Nodes (3): UserSession, TestSessionExpiration, TestUserSessionModel ### Community 45 - "Community 45" -Cohesion: 0.06 -Nodes (27): BaseModel, IntFlag, OrunmilaChatManager, MemoryCandidate, OrunmilaMemory, MemoryCandidate, Config, Covers line 28: GET /auth/health. (+19 more) +Cohesion: 0.04 +Nodes (60): BaseModel, IntFlag, OrunmilaMemory, Orunmila, OrunmilaChatManager, MemoryCandidate, OrunmilaMemory, SandboxManager (+52 more) ### Community 46 - "Community 46" Cohesion: 0.09 -Nodes (21): Regression: queryFundamental must not mutate the shared cache TIME column., Regression: queryFundamental must not mutate the shared cache TIME column., Regression: queryFundamental must not mutate the shared cache TIME column., Single invalid date -> inner 400 passes through., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Invalid fields now raise 400 with actionable error message. (+13 more) +Nodes (20): Regression: queryFundamental must not mutate the shared cache TIME column., Regression: queryFundamental must not mutate the shared cache TIME column., Regression: queryFundamental must not mutate the shared cache TIME column., Single invalid date -> inner 400 passes through., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Invalid fields now raise 400 with actionable error message. (+12 more) ### Community 47 - "Community 47" Cohesion: 0.1 @@ -818,8 +834,8 @@ Cohesion: 0.06 Nodes (34): Backend (COMMIT), code:bash (cd frontend && pnpm add @openuidev/react-lang), code:bash (rm frontend/src/components/MdocMessage.jsx), code:python ("""OpenUI Lang system prompt section for Prometheus agent.), code:block12, code:block13, code:block14, code:block15 (+26 more) ### Community 49 - "Community 49" -Cohesion: 0.09 -Nodes (24): dispatchToolCall(), TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes, makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., test_memory_tool_skipped_without_user() (+16 more) +Cohesion: 0.08 +Nodes (19): dispatchToolCall(), TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes, test_memory_tool_skipped_without_user(), test_non_memory_tool_not_routed_to_executeMemoryTool(), test_non_registry_tool_not_routed(), test_save_memory_routed_to_executeMemoryTool(), test_save_memory_routed_via_registry(), test_search_memory_routed_to_executeMemoryTool() (+11 more) ### Community 50 - "Community 50" Cohesion: 0.07 @@ -834,12 +850,12 @@ Cohesion: 0.08 Nodes (7): Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., Cover all methods in chat.py (lines 11-120)., TestPrometheusChatManager ### Community 53 - "Community 53" -Cohesion: 0.11 -Nodes (29): applyUpdate(), archiveDead(), clearAll(), clearAllAsync(), count_memories(), countMemories(), decayScores(), deleteMemory() (+21 more) +Cohesion: 0.1 +Nodes (39): applyUpdate(), archiveDead(), clearAll(), clearAllAsync(), count_memories(), countMemories(), countTokensCached(), decayScores() (+31 more) ### Community 54 - "Community 54" -Cohesion: 0.2 -Nodes (10): listFields(), Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental. (+2 more) +Cohesion: 0.11 +Nodes (18): Store a value in state. Marks state as changed for context injection., compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest() (+10 more) ### Community 55 - "Community 55" Cohesion: 0.11 @@ -858,8 +874,8 @@ Cohesion: 0.15 Nodes (16): getGoogleSSO(), googleCallback(), googleLogin(), isSecureScheme(), issueSessionCookie(), login(), logout(), register() (+8 more) ### Community 59 - "Community 59" -Cohesion: 0.17 -Nodes (20): Tests for main/utils/connectivity.py — covers all branches., test_both_engines_ok(), test_connection_error(), test_generic_exception(), test_non_200_status(), test_non_stocks_prefix(), test_request_exception(), test_service_not_found() (+12 more) +Cohesion: 0.09 +Nodes (31): lifespan(), status(), Tests for main/utils/connectivity.py — covers all branches., checkServiceConnection — success, not found, errors., checkServiceConnection — success, not found, errors., checkMySqlConnection — success, errors, engine=None paths., checkMySqlConnection — success, errors, engine=None paths., test_both_engines_ok() (+23 more) ### Community 60 - "Community 60" Cohesion: 0.09 @@ -894,8 +910,8 @@ Cohesion: 0.08 Nodes (11): Verify memory endpoints exist and are wired correctly., GET /prometheus/memories exists., POST /memories rejects missing key., POST /memories rejects missing value., POST /prometheus/memories exists., DELETE /prometheus/memories/{id} exists., GET /memories requires authentication., GET /memories requires USE_PROMETHEUS (basic USER role denied). (+3 more) ### Community 68 - "Community 68" -Cohesion: 0.11 -Nodes (20): authenticateUser(), AuthenticationManager, SessionManager, PrometheusChatManager, Cover getGoogleSSO (lines 6-14)., Cover getGoogleSSO (lines 6-14)., Cover __init__ and updateDates., Cover __init__ and updateDates (lines 22-37). (+12 more) +Cohesion: 0.23 +Nodes (6): chat_stream(), downloadWorkspaceFile(), getHistory(), resumeChatStream(), updateSessionTitle(), verifySessionOwnsership() ### Community 69 - "Community 69" Cohesion: 0.22 @@ -914,8 +930,8 @@ Cohesion: 0.15 Nodes (12): initialize(), P5: register memory maintenance on the shared scheduler. Kept in this ser, registerMemoryMaintenanceJob(), initialize(), P5: register the session-cleanup job on the shared scheduler. Kept in thi, registerSessionCleanupJobs(), UserService, getSharedScheduler() (+4 more) ### Community 73 - "Community 73" -Cohesion: 0.19 -Nodes (3): parseDateRange(), TestParseDateRange, TestParseDateRange +Cohesion: 0.16 +Nodes (6): _parse_date(), parseDateEnd(), parseDateRange(), parseDateStart(), TestParseDateRange, TestParseDateRange ### Community 74 - "Community 74" Cohesion: 0.11 @@ -943,31 +959,31 @@ Nodes (44): cn(), AlertDialogAction(), AlertDialogCancel(), AlertDialogContent() ### Community 80 - "Community 80" Cohesion: 0.1 -Nodes (22): buildSummary(), charCount(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers() (+14 more) +Nodes (20): buildSummary(), charCount(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers() (+12 more) ### Community 81 - "Community 81" -Cohesion: 0.17 -Nodes (12): getLiveCotation(), Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th (+4 more) +Cohesion: 0.15 +Nodes (13): getLiveCotation(), Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th, Get real-time price quotation for a single Brazilian B3 stock. Returns th (+5 more) ### Community 82 - "Community 82" -Cohesion: 0.16 -Nodes (13): arrowTypeFor(), buildCotationDateIndex(), buildFeatherCache(), buildTickerIndex(), optimizeDtypes(), P1: establish the sorted-cache invariant once at load/refresh. Sorts by (, P1: first-occurrence index over a sortCacheFrame-sorted frame. The cache, Get cached stocks data with optional column filtering. (+5 more) +Cohesion: 0.11 +Nodes (17): arrowTypeFor(), buildCotationDateIndex(), buildFeatherCache(), buildTickerIndex(), optimizeDtypes(), P1: establish the sorted-cache invariant once at load/refresh. Sorts by (, P1: first-occurrence index over a sortCacheFrame-sorted frame. The cache, Get cached stocks data with optional column filtering. (+9 more) ### Community 83 - "Community 83" Cohesion: 0.1 Nodes (21): B3 Market Scraper, Brazilian Stocks Market Scraper, code:env (SCRAPER_ENABLED=FALSE # default False), code:json ({), Configuration Parameters, Constraint Engine ($\Lambda$), Engines, Fundamental Engine ($\Phi$) (+13 more) ### Community 84 - "Community 84" -Cohesion: 0.14 -Nodes (12): chat(), chat_stream(), createSession(), downloadWorkspaceFile(), _forward(), getHistory(), Verify the user owns the session, raise 403 otherwise., Verify the user owns the session, raise 403 otherwise. (+4 more) +Cohesion: 0.05 +Nodes (23): chat(), chat_stream(), createSession(), downloadWorkspaceFile(), _forward(), getHistory(), Verify the user owns the session, raise 403 otherwise., Verify the user owns the session, raise 403 otherwise. (+15 more) ### Community 85 - "Community 85" Cohesion: 0.21 Nodes (16): AddDividendDialog(), fmtBRL(), AddLotDialog(), HoldingSearchBox(), matchHoldings(), assertDividendTotal(), assertNotFuture(), assertTicker() (+8 more) ### Community 86 - "Community 86" -Cohesion: 0.12 -Nodes (10): Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Tests covering query.py lines 50-67., Tests covering query.py lines 50-67., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Tests covering query.py lines 50-67., Tests covering query.py lines 50-67. (+2 more) +Cohesion: 0.08 +Nodes (24): code:python (def test_build_requests_presorted_rows(monkeypatch, tmp_path), code:python (def test_read_feather_dataframe_uses_arrow_backed_columns(tm), code:python (from pyarrow import feather), code:python (def readFeatherDataFrame(path) -> tuple[pd.DataFrame, bool]:), code:python (df, presorted = readFeatherDataFrame(CACHE_FEATHER_PATH)), code:bash (git add main/app/stocks_api/cache.py tests/test_stocks_cache), code:python (def test_deserialize_jsoncolumns_handles_arrowdtype_binary()), code:python (if col in JSON_COLUMNS and (df[col].dtype == "object" or pd.) (+16 more) ### Community 87 - "Community 87" Cohesion: 0.1 @@ -1018,19 +1034,19 @@ Cohesion: 0.28 Nodes (6): extractTokenPayload(), Tests for extractTokenPayload — the standalone token extraction dependency., Create a mock Starlette Request with given headers., Authorization: Bearer (empty) — no token after Bearer., Authorization: Basic xxx — not Bearer, so no token found., TestExtractTokenPayload ### Community 99 - "Community 99" -Cohesion: 0.06 -Nodes (29): _make_prometheus_client(), Return (client, app) with prometheus router and mocked deps., Covers lines 33-36: GET /prometheus/sessions., Covers lines 33-36: GET /prometheus/sessions., Covers lines 33-36: GET /prometheus/sessions., Covers line 52: POST /prometheus/sessions., Covers line 52: POST /prometheus/sessions., Covers line 52: POST /prometheus/sessions. (+21 more) +Cohesion: 0.04 +Nodes (46): _make_prometheus_client(), Covers lines 95-98: session deleted., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 111-112: sessionId is None, new session created., Covers lines 111-112: sessionId is None, new session created., Covers lines 118-119: sessionId is None, new session created. (+38 more) ### Community 100 - "Community 100" -Cohesion: 0.07 -Nodes (13): _assert_gemini_safe(), Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Regression: HarnessState must never leak into tool signatures., Regression: HarnessState must never leak into tool signatures., Assert a tool function has only Gemini-compatible parameter types., Assert a tool function has only Gemini-compatible parameter types., test_get_state_no_state_returns_error() (+5 more) +Cohesion: 0.16 +Nodes (6): _assert_gemini_safe(), Assert a tool function has only Gemini-compatible parameter types., Assert a tool function has only Gemini-compatible parameter types., test_set_state_no_state_returns_error(), test_tool_has_gemini_safe_signature(), TestStateToolFunctions ### Community 101 - "Community 101" -Cohesion: 0.17 -Nodes (7): Different query parameters should not share cache, Cache should expire after TTL, Tests for query result caching, CacheManager should track cached queries, Query cache should have configurable TTL, getCachedStocks should support column filtering, TestQueryCaching +Cohesion: 0.1 +Nodes (16): Tests for connection pool configuration, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Query manager should have deserialize method, Tests for optimized search filtering, Filter should use ticker index for O(1) lookup, Performance tests for query operations, Query should respond within 1 second (+8 more) ### Community 102 - "Community 102" -Cohesion: 0.12 +Cohesion: 0.11 Nodes (11): BaseSettings, BaseMansaSettings, DiscordSettings, MysqlSettings, OrunmilaSettings, PrometheusSettings, ScraperSettings, StocksApiSettings (+3 more) ### Community 103 - "Community 103" @@ -1038,12 +1054,12 @@ Cohesion: 0.13 Nodes (14): 10. Performance, 11. Testing, 12. Risks, 13. Out of Scope (YAGNI), 14. Open Questions, 1. Executive Summary, 2. Context & Motivation, 5. Architecture Decision (+6 more) ### Community 104 - "Community 104" -Cohesion: 0.06 -Nodes (34): Covers lines 83-84: session not found., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126, 131, 135-136., Covers lines 126, 131, 135-136., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126, 131, 135-136., Covers lines 127-129: session not found. (+26 more) +Cohesion: 0.14 +Nodes (13): benchOnce(), main(), batchCosineSimilarity(), decodeEmbeddings(), normalizeRows(), Empty matrix → empty array., Single row matches cosine_similarity., Multiple rows ranked correctly. (+5 more) ### Community 105 - "Community 105" -Cohesion: 0.18 -Nodes (11): client(), TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with stocks router + verifyAPIKey + getCurrentUser overrides., TestClient with all routers mounted — no lifespan (no DB/service init). O (+3 more) +Cohesion: 0.12 +Nodes (10): Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Tests covering query.py lines 50-67., Tests covering query.py lines 50-67., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Tests covering query.py lines 50-67., Tests covering query.py lines 50-67. (+2 more) ### Community 106 - "Community 106" Cohesion: 0.22 @@ -1062,15 +1078,15 @@ Cohesion: 0.14 Nodes (13): cls_token, do_basic_tokenize, do_lower_case, mask_token, model_max_length, name_or_path, never_split, pad_token (+5 more) ### Community 110 - "Community 110" -Cohesion: 0.21 -Nodes (7): ResultCache — SHA256-keyed file-based cache for computed results., File-based cache keyed by SHA256 of code. Stores results as JSON under:, Return cached result dict or None if miss., Store result with timestamp., Delete all cached results for a session., Check if a result exists for the given code., ResultCache +Cohesion: 0.07 +Nodes (27): code:python (import re), code:bash (git add main/controller/stocksapi_controller.py tests/test_s), code:python (def test_feather_reload_drops_cached_bodies(monkeypatch):), code:python (def clearEndpointCache() -> None:), code:python (from main.app.stocks_api.compress import rebuildAbbrevs), code:bash (git add main/app/stocks_api/sync_cache.py main/app/stocks_ap), code:bash (docker compose up -d --build api), code:powershell ($Key = $env:PERF_API_KEY) (+19 more) ### Community 111 - "Community 111" Cohesion: 0.14 Nodes (13): code:python (import pytest), code:python (import logging), code:bash (git add main/app/prometheus/state.py tests/test_harness_stat), File Map, Global Constraints, Phase 1: HarnessState (In-Memory Agent Scratchpad), Prometheus Harness — Master Implementation Plan (v2: CubeSandbox + On-Demand), Relationship to Existing Systems (+5 more) ### Community 112 - "Community 112" -Cohesion: 0.11 +Cohesion: 0.1 Nodes (16): Calling with all None returns 400., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Calling with all None returns 400. (+8 more) ### Community 113 - "Community 113" @@ -1102,16 +1118,16 @@ Cohesion: 0.07 Nodes (26): code:python ("""Tests for SandboxManager file mutation helpers (delete_fi), code:python (from main.app.prometheus.sandbox import SandboxManager, host), code:python (@router.post("/workspace/upload")), code:bash (git add main/controller/prometheus_controller.py tests/test_), code:python (from unittest.mock import patch, MagicMock), code:python (from main.app.prometheus.sandbox import SandboxManager, host), code:python (async def serve_file(path: str, **_) -> dict:), code:python ("serve_file": serve_file,) (+18 more) ### Community 120 - "Community 120" -Cohesion: 0.09 -Nodes (35): _make_auth_client(), Tests to cover uncovered lines across controllers, UserManager, and auth util., Covers lines 44-54, 63, 66-71: register success, ValueError, generic Exception., Covers lines 44-54, 63, 66-71: register success, ValueError, generic Exception., Covers lines 87-93, 102: login success and failure paths., Covers lines 87-93, 102: login success and failure paths., Return (client, app) with auth + user routers and mocked getSession., Covers lines 107, 109-130, 133: logout token extraction and revocation. (+27 more) +Cohesion: 0.07 +Nodes (43): _make_auth_client(), Tests to cover uncovered lines across controllers, UserManager, and auth util., Return (client, app) with auth + user routers and mocked getSession., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126, 131, 135-136., Covers lines 126, 131, 135-136., Covers lines 126-136: DELETE /user/sessions/{sessionId}. (+35 more) ### Community 121 - "Community 121" Cohesion: 0.21 Nodes (12): code:python (import inspect), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (TOOL_REGISTRY: dict[str, Any] = {), code:python (## Code Sandbox (On-Demand)), code:bash (git add main/app/prometheus/agent.py), code:dockerfile (FROM python:3.11-slim), code:bash (git add Dockerfile.sandbox), Phase 6: Agent Integration (All Layers) (+4 more) ### Community 122 - "Community 122" -Cohesion: 0.15 -Nodes (10): test_setup_discord_handler_disabled(), test_setup_discord_handler_enabled(), Many concurrent emit() calls must not create more threads than max_workers., Verify that DiscordHandler submits to a bounded executor, not raw threads., The module-level discordExecutor must exist with max_workers <= 5., DiscordHandler.emit() must use discordExecutor.submit, not Thread.start., TestDiscordHandlerThreadPool, DiscordHandler (+2 more) +Cohesion: 0.05 +Nodes (39): TestCleanup, Tests for main/utils/logging_config.py — covers DiscordHandler branches., test_discord_disabled(), test_discord_no_webhook(), test_exception_in_submit(), test_level_below_error(), test_message_truncation(), test_setup_discord_handler_disabled() (+31 more) ### Community 123 - "Community 123" Cohesion: 0.17 @@ -1122,8 +1138,8 @@ Cohesion: 0.07 Nodes (27): code:python (# tests/test_stocks_payload_cache.py), code:python (pc = self.cacheManager.tickerPayloads), code:python (# tests/test_stocks_sync_handlers.py), code:bash (git add main/controller/stocksapi_controller.py main/app/sto), code:python (def test_payload_cache_cotation_index():), code:python (self._cotations: dict[str, bytes] = {}), code:python (cotationCols = ["TICKER", "NOME", "TIME", "COTACAO 10Y PADRA), code:python (self._cotations = cot) (+19 more) ### Community 126 - "Community 126" -Cohesion: 0.18 -Nodes (11): Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback. (+3 more) +Cohesion: 0.07 +Nodes (26): code:powershell (netstat -ano | findstr ":80 " # must be empty; if not, ), code:powershell ($U = "http://localhost/stocks/cotations?search=PETR4"), code:nginx (proxy_pass http://stocks_api;), code:nginx (# Exact-match on purpose: a prefix match on /stocks/cotation), code:powershell (docker exec nginx nginx -t; if ($?) { docker exec nginx ngin), code:bash (git add nginx/conf.d/20-stocks.conf nginx/snippets/stocks-pr), code:powershell (docker stats --no-stream --format "{{.Name}},{{.CPUPerc}},{{), code:powershell ($U = "http://localhost/stocks/cotations?search=PETR4") (+18 more) ### Community 127 - "Community 127" Cohesion: 0.2 @@ -1138,12 +1154,12 @@ Cohesion: 0.2 Nodes (10): Tests for stocks API field validation — verifies the fields parameter accepts a, Integration: /stocks/fundamental must accept slash and dot fields., Minimal TestClient with just the stocks router for validation tests., GET /fundamental?fields=P/L must not return 422 (validation error)., GET /fundamental?fields=P/L must not return 422 (validation error)., Integration: /stocks/fundamental must accept slash and dot fields., GET /fundamental?fields=P/L must not return 422 (validation error)., GET /historical?fields=P/L must not return 422. (+2 more) ### Community 130 - "Community 130" -Cohesion: 0.24 -Nodes (8): create_memory(), createMemory(), _downloadModel(), embed(), getEmbeddingModel(), executeMemoryTool(), initialize(), OrunmilaService +Cohesion: 0.08 +Nodes (25): 1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield), 1.2 Non-functional, 1. Requirements, 2. Domain model, 3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout), 3. API contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout), 4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase), 5. Risks / assumptions (honest flags carried over — do not treat as fact) (+17 more) ### Community 131 - "Community 131" -Cohesion: 0.11 -Nodes (17): Same input → same hash., Different inputs → different hashes., Returns 32-char hex string., pack → unpack preserves values., Empty list roundtrips., 384-dim vector packs to 1536 bytes., TestContentHash, TestPackUnpack (+9 more) +Cohesion: 0.23 +Nodes (9): Same input → same hash., Different inputs → different hashes., Returns 32-char hex string., TestContentHash, ALL(), content_hash(), contentHash(), MD5 hash for change detection. (+1 more) ### Community 132 - "Community 132" Cohesion: 0.25 @@ -1158,16 +1174,20 @@ Cohesion: 0.18 Nodes (11): code:yaml (volumes:), code:bash (git add config.py docker-compose.yml), code:python (import pytest), code:python (import logging), code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py), code:python (class PrometheusSettings(BaseMansaSettings):), code:yaml (environment:), code:yaml (sandbox:) (+3 more) ### Community 135 - "Community 135" -Cohesion: 0.11 -Nodes (4): cache(), Tests for ResultCache., TestColumnValidator, TestResultCache +Cohesion: 0.07 +Nodes (11): ResultCache — SHA256-keyed file-based cache for computed results., File-based cache keyed by SHA256 of code. Stores results as JSON under:, Return cached result dict or None if miss., Store result with timestamp., Delete all cached results for a session., Check if a result exists for the given code., ResultCache, cache() (+3 more) + +### Community 136 - "Community 136" +Cohesion: 0.14 +Nodes (8): Performance benchmark tests for stocks API, Ticker index lookup should be O(1) - very fast, Prefix scan should be much slower than index lookup, Index lookup should be significantly faster than scan, Query cache should avoid recomputation, Column projection should reduce memory and time, Cache initialization should complete in reasonable time, TestPerformanceBenchmarks ### Community 137 - "Community 137" -Cohesion: 0.17 -Nodes (21): countMemories(), deleteMemory(), extract(), findSimilarKey(), fullTextSearch(), getClient(), getMatrix(), getMemoryLimit() (+13 more) +Cohesion: 0.19 +Nodes (19): countMemories(), deleteMemory(), extract(), findSimilarKey(), fullTextSearch(), getClient(), getMatrix(), getMemoryLimit() (+11 more) ### Community 138 - "Community 138" -Cohesion: 0.18 -Nodes (6): test_stream_message_yields_text_chunks(), FakeChunk, GREEN test: streamMessage works without chatSession — MCP setup is inlined. Aft, streamMessage inlines MCP setup — chatSession no longer exists., streamMessage inlines MCP setup — chatSession no longer exists., TestStreamMessageNoChatSession +Cohesion: 0.11 +Nodes (9): Pytest Testing, Tests for main/utils/http_session.py — covers all branches., TestGetSession, test_stream_message_yields_text_chunks(), FakeChunk, GREEN test: streamMessage works without chatSession — MCP setup is inlined. Aft, streamMessage inlines MCP setup — chatSession no longer exists., streamMessage inlines MCP setup — chatSession no longer exists. (+1 more) ### Community 139 - "Community 139" Cohesion: 0.24 @@ -1175,7 +1195,7 @@ Nodes (6): Dataset, produce_data(), Train script for a single file Need to set ### Community 140 - "Community 140" Cohesion: 0.04 -Nodes (51): Base, OrunmilaMemory, PrometheusMemory, PrometheusMemory, MemoryManager, PrometheusMemory, All memory operations. Stateless class methods., PrometheusService (+43 more) +Nodes (50): Base, PrometheusMemory, PrometheusMemory, OrunmilaSandbox, MemoryManager, PrometheusMemory, All memory operations. Stateless class methods., PrometheusService (+42 more) ### Community 141 - "Community 141" Cohesion: 0.24 @@ -1205,6 +1225,10 @@ Nodes (7): COLUMNS, fmtBRL(), fmtPct(), OverviewCards(), fetchWallet(), fetchWal Cohesion: 0.23 Nodes (3): categorizeColumns(), TestCategorizeColumns, TestCategorizeColumns +### Community 148 - "Community 148" +Cohesion: 0.09 +Nodes (20): Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 109-136: POST /prometheus/chat/stream (SSE)., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 120-121: existing session with verified ownership., Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat. (+12 more) + ### Community 149 - "Community 149" Cohesion: 0.18 Nodes (5): createSession(), getSessionById(), parseDeviceFields(), revokeSession(), validateSession() @@ -1234,8 +1258,8 @@ Cohesion: 0.22 Nodes (8): API Endpoints, code:env (#), code:bash (python __init__.py), code:mermaid (graph TD), License, Prometheus, Usage, Workflow ### Community 157 - "Community 157" -Cohesion: 0.17 -Nodes (12): getFundamental(), Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret (+4 more) +Cohesion: 0.1 +Nodes (16): generateKey(), getFundamental(), JSONBytesResponse, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret (+8 more) ### Community 158 - "Community 158" Cohesion: 0.22 @@ -1254,8 +1278,8 @@ Cohesion: 0.11 Nodes (18): Category 2: Async/Sync Inconsistencies (MEDIUM), Category 4: Caching & Memory (MEDIUM), Category 6: Configuration & Environment (LOW), Category 7: Code Quality (LOW), Executive Summary, Full Code Review Report, Issue 2.1 — All route handlers are synchronous, Issue 2.2 — ServiceManager runs uvicorn in daemon threads (+10 more) ### Community 162 - "Community 162" -Cohesion: 0.15 -Nodes (18): executeStateTool(), get_state(), Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, test_dispatch_get_state(), test_dispatch_set_state() (+10 more) +Cohesion: 0.24 +Nodes (14): buildSummary(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers(), extractToolCalls() (+6 more) ### Community 163 - "Community 163" Cohesion: 0.22 @@ -1282,16 +1306,16 @@ Cohesion: 0.4 Nodes (4): compilerOptions, baseUrl, paths, @/* ### Community 169 - "Community 169" -Cohesion: 0.11 -Nodes (14): getCotations(), JSONBytesResponse, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur (+6 more) +Cohesion: 0.17 +Nodes (12): getCotations(), Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur, Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur (+4 more) ### Community 170 - "Community 170" Cohesion: 0.25 Nodes (8): padding, direction, pad_id, pad_to_multiple_of, pad_token, pad_type_id, strategy, Fixed ### Community 172 - "Community 172" -Cohesion: 0.19 -Nodes (7): Tests for thread safety utilities (Issues 5 & 6). Issue 5: DiscordHandler use, Verify getSession returns thread-local sessions under concurrency., getSession() must give each thread its own Session., connectivity.checkServiceConnection must call getSession(), not use a global Ses, connectivity.checkServiceConnection must call getSession(), not use a global Ses, TestConcurrentGetSession, TestConcurrentHttpProxy +Cohesion: 0.11 +Nodes (21): authenticateUser(), AuthenticationManager, createUserAccount(), SessionManager, PrometheusChatManager, Cover getGoogleSSO (lines 6-14)., Cover getGoogleSSO (lines 6-14)., Cover __init__ and updateDates. (+13 more) ### Community 173 - "Community 173" Cohesion: 0.25 @@ -1314,8 +1338,8 @@ Cohesion: 0.25 Nodes (7): computedHash, skillPath, source, sourceType, skills, backend-code-review, version ### Community 178 - "Community 178" -Cohesion: 0.2 -Nodes (9): Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing. (+1 more) +Cohesion: 0.14 +Nodes (14): 3.0 Verified ground truth, 3.10 Migration sequence + verification, 3.1 Target topology, 3.2 Worker-container extraction, 3.3 nginx upstream evolution — validated against the user's plan, 3.4 TODO 13 migration — drop `{service}_HOST`/`{service}_PORT`, 3.5 Redis — exactly two jobs, 3.6 Cache strategy across boxes (+6 more) ### Community 179 - "Community 179" Cohesion: 0.29 @@ -1330,24 +1354,24 @@ Cohesion: 0.25 Nodes (7): code:block1 (main/), Execution Handoff, Executive Summary: What Mem0 Does That We Don't, File Structure, Mem0 vs Prometheus Memory System — Comparison & Upgrade Plan, Self-Review Checklist, What We Already Do Well (Don't Replace) ### Community 183 - "Community 183" -Cohesion: 0.07 -Nodes (20): Tests for connection pool configuration, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Query manager should have deserialize method, Integration tests for all query optimizations, All optimizations should be implemented, Query filter should use ticker index, Tests for optimized search filtering (+12 more) +Cohesion: 0.14 +Nodes (14): 3.0 Verified ground truth, 3.10 Migration sequence + verification, 3.1 Target topology, 3.2 Worker-container extraction, 3.3 nginx upstream evolution — validated against the user's plan, 3.4 TODO 13 migration — drop `{service}_HOST`/`{service}_PORT`, 3.5 Redis — exactly two jobs, 3.6 Cache strategy across boxes (+6 more) ### Community 184 - "Community 184" -Cohesion: 0.11 -Nodes (6): Tests for run.py /status endpoint — covers status response structure., Create a test client for the status endpoint without running lifespan., Create a test client for the status endpoint without running lifespan., statusClient(), TestScraperTrigger, TestStatusEndpoint +Cohesion: 0.23 +Nodes (8): pack → unpack preserves values., Empty list roundtrips., 384-dim vector packs to 1536 bytes., TestPackUnpack, pack_vector(), Unpack MySQL BLOB to float list., Vectorized cosine similarity: one query against N embeddings., unpack_vector() ### Community 185 - "Community 185" Cohesion: 0.38 Nodes (7): code:python (import pytest), code:python (from __future__ import annotations), code:bash (git add main/app/prometheus/context.py tests/test_context.py), Phase 4: ToolContext (Bundled Dispatch Dependencies), Phase 4: ToolContext (Replace God Function), Task 5: ToolContext — Dataclass for Agent Use, Task 5: ToolContext — Single Dispatch Object ### Community 187 - "Community 187" -Cohesion: 0.29 -Nodes (6): DEVELOPER:, PREMIUM:, Prometheus, STOCKS_API, USER:, User structure defined by string roles: +Cohesion: 0.25 +Nodes (7): DEVELOPER:, PREMIUM:, Priorities (active order, 2026-09-29), Prometheus, STOCKS_API, USER:, User structure defined by string roles: ### Community 188 - "Community 188" -Cohesion: 0.33 -Nodes (10): Tests for main/utils/logging_config.py — covers DiscordHandler branches., test_discord_disabled(), test_discord_no_webhook(), test_exception_in_submit(), test_level_below_error(), test_message_truncation(), test_submit_called_on_error(), test_with_exception_info() (+2 more) +Cohesion: 0.2 +Nodes (9): Invalid date -> inner 400 passes through (not wrapped as 500)., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Two dates in the range, both valid. (+1 more) ### Community 189 - "Community 189" Cohesion: 0.36 @@ -1382,8 +1406,8 @@ Cohesion: 0.33 Nodes (5): cls_token, mask_token, pad_token, sep_token, unk_token ### Community 197 - "Community 197" -Cohesion: 0.18 -Nodes (11): getHistorical(), Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns (+3 more) +Cohesion: 0.17 +Nodes (12): getHistorical(), Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns, Get year-based historical financial data for Brazilian B3 stocks. Returns (+4 more) ### Community 198 - "Community 198" Cohesion: 0.33 @@ -1426,8 +1450,8 @@ Cohesion: 0.33 Nodes (6): API Design (6), Architecture (8), Frontend (7), P1 — Should Fix, Security (6), Testing (4) ### Community 208 - "Community 208" -Cohesion: 0.2 -Nodes (10): Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the sandbox filesystem. Args: path: Absolute pa, List files in the workspace directory. Args: path: Directory pat, Read a file from the workspace. Args: path: Path to the file (e. (+2 more) +Cohesion: 0.09 +Nodes (22): 10. Plans and follow-ups, 1. Context, 2. Decisions, 3. Caching policy (canonical), 4. Topology, 5. Quota and rate limits after caching, 6. Non-goals, 7. Acceptance criteria (+14 more) ### Community 209 - "Community 209" Cohesion: 0.33 @@ -1450,8 +1474,8 @@ Cohesion: 0.17 Nodes (11): code:python (def test_search_defersEmbeddingBlob(db):), code:python (from contextlib import contextmanager), code:python (from sqlalchemy.orm import defer), code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear), code:python (def test_search_fusesFulltextOverVectorOnly(db):), code:python (def minMax(values: list[float]) -> list[float]:), code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear), Global Constraints (+3 more) ### Community 215 - "Community 215" -Cohesion: 0.12 -Nodes (12): Store a value in state. Marks state as changed for context injection., ResponseCache, autoAbbreviate(), dedupAbbrev(), detectNestedFields(), generateAbbreviations(), _parse_date(), parseDate() (+4 more) +Cohesion: 0.15 +Nodes (13): 1.10 Edge cases / risks (implementation), 1.1 Architecture decision, 1.2 File layout, 1.5 Phase P2 — port scheme, worker containers, keepalive, 1.6 Phase P3 — remote VPS upstreams + health strategy, 1.7 Phase P4 — handoff design (no code in this plan), 1.8 Quota / rate-limit semantics after caching, 1.9 Anti-scraping note (TODO 17) (+5 more) ### Community 216 - "Community 216" Cohesion: 0.29 @@ -1477,6 +1501,10 @@ Nodes (5): model, continuing_subword_prefix, max_input_chars_per_word, type, unk Cohesion: 0.2 Nodes (9): Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148., Covers lines 143, 145, 147-148., Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148., Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148. (+1 more) +### Community 222 - "Community 222" +Cohesion: 0.18 +Nodes (11): listFields(), Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental. (+3 more) + ### Community 223 - "Community 223" Cohesion: 0.4 Nodes (5): code:python (from main.app.prometheus.tools import SANDBOX_TOOLS, SANDBOX), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (async def dispatchToolCall(functionCall, mcpClients, user=No), code:bash (git add main/app/prometheus/tools.py tests/test_sandbox.py), Task 5: Sandbox Tools — Gemini Function Declarations + Dispatch @@ -1509,10 +1537,6 @@ Nodes (5): code:python (import pytest), code:python (import hashlib), code:bash Cohesion: 0.18 Nodes (11): 2.2.1 Complexity hotspots table (H1–H17 condensed to P0/P1/P2), 2.2.2 Blob inventory (LOC table + SRP evidence), 2.2.3 Mass data loads, 2.2.4 Phased fix roadmap (P0/P1/P2), §2.2 CODE EFFICIENCY — O(n²), Complexity & Blob Anti-Patterns, code:block4 (scraper.py:44 671 LOC — mass loads: SELECT * fetchma), code:powershell (ruff check . && ruff format --check .), code:powershell (pytest tests/test_stocks_cache_concurrency.py -v # ThreadPo) (+3 more) -### Community 231 - "Community 231" -Cohesion: 0.13 -Nodes (13): Covers lines 95-98: session deleted., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}., Covers lines 95-98: session deleted., Covers lines 96-97: session not found., Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}. (+5 more) - ### Community 232 - "Community 232" Cohesion: 0.4 Nodes (5): Bucket A: Security Fixes (quick wins, 30 min), Bucket B: DB Session Cleanup (medium, 1-2 hrs), Bucket C: Testing (medium, 2-3 hrs), Bucket D: Infrastructure (large, 4+ hrs), Recommended Delegation Buckets @@ -1522,8 +1546,8 @@ Cohesion: 0.4 Nodes (5): 8. Build Sequence (4 phases, each independently shippable), Phase 0 — Sandbox foundation (1-2 days, no user-facing change), Phase 1 — MCP exposure of STOCKS_API (1 day), Phase 2 — Refactor PROMETHEUS to agentic (3-5 days, the big one), Phase 3 — Hardening (1-2 days, can ship incrementally) ### Community 234 - "Community 234" -Cohesion: 0.27 -Nodes (16): OrunmilaSandbox, create(), delete_file(), destroy(), execute(), getClient(), getOrCreate(), hostPath() (+8 more) +Cohesion: 0.32 +Nodes (14): create(), delete_file(), destroy(), execute(), getClient(), getOrCreate(), hostPath(), list_files() (+6 more) ### Community 236 - "Community 236" Cohesion: 0.5 @@ -1570,8 +1594,8 @@ Cohesion: 0.5 Nodes (4): Category 5: Error Handling Gaps (MEDIUM), Issue 5.1 — Generic exception handler swallows traceback in production, Issue 5.2 — DiscordHandler sends only message, not traceback, Issue 5.3 — `_build_error_response` ignores `status_code` parameter ### Community 251 - "Community 251" -Cohesion: 0.12 -Nodes (7): Pytest Testing, pytest_configure(), Set required env vars before test collection. config.py eagerly instantia, Reset slowapi in-memory rate limiter between every test., Set required env vars before test collection. config.py eagerly instantia, Set required env vars before test collection. config.py eagerly instantia, _reset_rate_limiter() +Cohesion: 0.09 +Nodes (17): client(), pytest_configure(), TestClient with all routers mounted — no lifespan (no DB/service init). O, Set required env vars before test collection. config.py eagerly instantia, Reset slowapi in-memory rate limiter between every test., Set required env vars before test collection. config.py eagerly instantia, TestClient with all routers mounted — no lifespan (no DB/service init). O, TestClient with all routers mounted — no lifespan (no DB/service init). O (+9 more) ### Community 252 - "Community 252" Cohesion: 0.5 @@ -1590,8 +1614,8 @@ Cohesion: 0.5 Nodes (3): Basic fields like ROE must still pass., Basic fields like ROE must still pass., Basic fields like ROE must still pass. ### Community 256 - "Community 256" -Cohesion: 0.21 -Nodes (6): buildSystemPrompt(), getClient(), Orunmila, persistEvent(), OrunmilaCompactor, newTokenCache() +Cohesion: 0.13 +Nodes (13): Covers lines 83-84: session not found., Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}., Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}., Covers lines 77, 86: session found with history., Covers lines 77, 86: session found with history., Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}., Covers lines 77, 86: session found with history., Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}. (+5 more) ### Community 258 - "Community 258" Cohesion: 0.67 @@ -1614,8 +1638,12 @@ Cohesion: 0.22 Nodes (8): 1. Prime owns the goal, lanes own the work, 2. Dispatch: `delegate()`, one per lane, one turn, 3. Delegate toolsets vary — verify each lane, 4. Trust nothing — verify everything, 5. Windows PowerShell survival, 6. Finish per lane, not per swarm, 7. Standing bans (this repo), SWARMS.md — subagent swarm playbook (OpenCode / Hermes) ### Community 474 - "Community 474" -Cohesion: 0.26 -Nodes (13): buildSummary(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers(), extractToolCalls() (+5 more) +Cohesion: 0.22 +Nodes (8): Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range. + +### Community 475 - "Community 475" +Cohesion: 0.15 +Nodes (13): 1.10 Edge cases / risks (implementation), 1.1 Architecture decision, 1.2 File layout, 1.5 Phase P2 — port scheme, worker containers, keepalive, 1.6 Phase P3 — remote VPS upstreams + health strategy, 1.7 Phase P4 — handoff design (no code in this plan), 1.8 Quota / rate-limit semantics after caching, 1.9 Anti-scraping note (TODO 17) (+5 more) ### Community 476 - "Community 476" Cohesion: 0.22 @@ -1662,8 +1690,8 @@ Cohesion: 0.23 Nodes (6): CHART_COLORS, PortfolioBarsCard(), PortfolioPieCard(), tooltipStyle, groupHistoryByMonth(), monthKey() ### Community 487 - "Community 487" -Cohesion: 0.15 -Nodes (14): execute_code(), Store a value in the harness state for this session. Use this to save inter, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis, (+6 more) +Cohesion: 0.12 +Nodes (15): 1.1 Process model — exactly one process, several threads, 1.2 Cache (post-refactor) — RAM sharing works, 1.3 Per-process resources that multiply with N workers, 1. Verified current state, 2. The blocking defect (must fix before N > 1), 3. Options evaluated, 4. Recommended plan, 5. Evaluation of the existing scaling plan (recovered from git) (+7 more) ### Community 489 - "Community 489" Cohesion: 0.6 @@ -1673,10 +1701,6 @@ Nodes (4): hammer_measured(), main(), Fire n requests with c concurrent workers, Cohesion: 0.22 Nodes (8): API Endpoints, code:env (ORUNMILA_ENABLED=TRUE), code:bash (python run.py), code:mermaid (graph TD), License, Orunmila, Usage, Workflow -### Community 491 - "Community 491" -Cohesion: 0.43 -Nodes (4): _extractCredential(), _introspectUrl(), introspectUser(), _serviceToken() - ### Community 492 - "Community 492" Cohesion: 0.33 Nodes (5): Baseline (lane 4), Export recipe, Move triggers (any one fires the migration), Options, Vector Scale-Up Runbook @@ -1686,37 +1710,41 @@ Cohesion: 0.2 Nodes (9): Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval. (+1 more) ### Community 495 - "Community 495" -Cohesion: 0.14 -Nodes (13): dispatchToolCall(), execute_code(), list_files(), Read a file from the workspace. Args: path: Path to the file (e., Write a file to the workspace. Use this to save data files (CSV, JSON, scri, List files in the workspace directory. Args: path: Directory pat, Get a download link for a workspace file to share with the user. Use this, Search user's saved memories, preferences, and past analysis context. Use (+5 more) +Cohesion: 0.05 +Nodes (42): 0. The blockers, ranked, 1.1 Process model — exactly one process, several threads, 1.1 Runtime topology — one process, many threads, 1.2 Cache (post-refactor) — RAM sharing works, 1.2 The cache is already the right shape for multi-process, 1.3 Per-process resources that multiply with N workers, 1.3 Per-process state that multiplies with N, 1. Verified current state (+34 more) ### Community 497 - "Community 497" -Cohesion: 0.23 -Nodes (6): chat_stream(), downloadWorkspaceFile(), getHistory(), resumeChatStream(), updateSessionTitle(), verifySessionOwnsership() +Cohesion: 0.19 +Nodes (5): buildSystemPrompt(), getClient(), persistEvent(), OrunmilaCompactor, newTokenCache() ### Community 498 - "Community 498" -Cohesion: 0.07 -Nodes (24): Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 13: UserManager.__init__., Covers line 13: UserManager.__init__., Covers line 13: UserManager.__init__. (+16 more) +Cohesion: 0.17 +Nodes (7): Different query parameters should not share cache, Cache should expire after TTL, Tests for query result caching, CacheManager should track cached queries, Query cache should have configurable TTL, getCachedStocks should support column filtering, TestQueryCaching ### Community 499 - "Community 499" Cohesion: 0.2 Nodes (9): code:python (import numpy as np), code:python (def normalizeRows(matrix: np.ndarray) -> np.ndarray:), code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm), code:python ("""One-shot: renormalize stored embeddings to unit norm. Usa), code:bash (git add scripts/backfill_normalize_embeddings.py), Global Constraints, Lane 1: Normalized Embeddings + Dot-Product Search Implementation Plan, Task 1: Normalize on encode + row-normalize helper (+1 more) ### Community 500 - "Community 500" -Cohesion: 0.13 -Nodes (21): generateKey(), createKey(), createStoredApiKey(), hashApiKey(), initVerifyClient(), isValidStoredKey(), _serviceToken(), verifyAPIKey() (+13 more) +Cohesion: 0.16 +Nodes (17): createStoredApiKey(), hashApiKey(), initVerifyClient(), isValidStoredKey(), _serviceToken(), verifyAPIKey(), _verifyUrl(), Tests to increase coverage for query.py, key.py, and cache.py in stocks_api. (+9 more) ### Community 501 - "Community 501" Cohesion: 0.22 Nodes (3): getCurrentSession(), getSessions(), sessionToDict() ### Community 502 - "Community 502" -Cohesion: 0.08 -Nodes (20): Tests for connection pool configuration, Tests for connection pool configuration, Stocks engine should have optimized pool settings, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Tests for lazy JSON deserialization, Query manager should have deserialize method, Query manager should have deserialize method (+12 more) +Cohesion: 0.11 +Nodes (15): Tests for connection pool configuration, Tests for connection pool configuration, Stocks engine should have optimized pool settings, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Tests for lazy JSON deserialization, Query manager should have deserialize method, Query manager should have deserialize method (+7 more) ### Community 503 - "Community 503" Cohesion: 0.17 Nodes (7): Tests for dynamic ticker index feature, Ticker index should be built when cache is loaded, Ticker index should contain all tickers from cache, Ticker index should be case-insensitive, Looking up ticker should return valid row index, Ticker index should be rebuilt when cache refreshes, TestTickerIndex +### Community 504 - "Community 504" +Cohesion: 0.29 +Nodes (6): dbSession(), Tests for atomic API key quota enforcement (race condition fix). Verifies tha, Sample API key data for tests., Create an in-memory SQLite database for testing., Sample API key data for tests., sampleKeyData() + ### Community 505 - "Community 505" Cohesion: 0.33 Nodes (5): streamChat(), events, onChunk, onDone, onError @@ -1737,57 +1765,61 @@ Nodes (5): Disputed (already litigated — needs your ruling to proceed), Held o Cohesion: 0.6 Nodes (3): bench(), main(), stats() +### Community 511 - "Community 511" +Cohesion: 0.29 +Nodes (6): Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., Covers line 18: GET /stocks/health., TestStocksApiHealth + ### Community 512 - "Community 512" -Cohesion: 0.47 -Nodes (3): TestCleanup, cleanup(), Close the main thread's session at interpreter shutdown. +Cohesion: 0.18 +Nodes (11): 2.0 Grounding: what the code actually does, 2.1 Hypotheses, 2.3 Scenarios, 2.4 Protocol, 2.5 Metrics, 2.6 Acceptance thresholds — **ALL PROPOSED, freeze after first real run**, 2.7 Results doc layout, 2.8 Feeding `/status` (TODO 14) (+3 more) ### Community 517 - "Community 517" Cohesion: 0.2 Nodes (16): baseFrame(), deserializeJsonColumns(), envelope(), fetchLivePayload(), filterBySearchTerms(), _filterCotationByDate(), filterCotationData(), finalize() (+8 more) ### Community 518 - "Community 518" -Cohesion: 0.1 -Nodes (15): create_memories(), Decay happens first, then archive check with new scores., Decay happens first, then archive check with new scores., Score that decays to >= threshold stays alive. 0.11 * 0.95 = 0.1045 >= 0.1., Score that decays to >= threshold stays alive. 0.12 * 0.90 = 0.108 >= 0.1., 89 days with low score → not archived (need > 90)., 89 days with low score → not archived (need > 90)., Helper to create memories with controlled baseScore, lastAccessedAt, accessCount (+7 more) +Cohesion: 0.06 +Nodes (30): memoryMaintenance(), create_memories(), Zero access but score still above threshold → not archived., Even with low score, if accessed → not archived., Even with low score, if accessed → not archived., Already archived memories are skipped., Already archived memories are skipped., Decay happens first, then archive check with new scores. (+22 more) ### Community 519 - "Community 519" Cohesion: 0.57 Nodes (6): addRole(), addRoleToUser(), getCurrentUser(), getRolesList(), hasRole(), toDict() ### Community 520 - "Community 520" -Cohesion: 0.16 -Nodes (9): pd.NA is not a string, so lambda returns it unchanged., All four SPECIAL_COLS should parse correctly when mixed with None., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., All four SPECIAL_COLS should parse correctly when mixed with None., All four SPECIAL_COLS should parse correctly when mixed with None. (+1 more) +Cohesion: 0.33 +Nodes (5): pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged. ### Community 521 - "Community 521" Cohesion: 0.33 Nodes (3): buildClient(), connect(), MCPClientPool +### Community 522 - "Community 522" +Cohesion: 0.18 +Nodes (11): 2.0 Grounding: what the code actually does, 2.1 Hypotheses, 2.3 Scenarios, 2.4 Protocol, 2.5 Metrics, 2.6 Acceptance thresholds — **ALL PROPOSED, freeze after first real run**, 2.7 Results doc layout, 2.8 Feeding `/status` (TODO 14) (+3 more) + ### Community 523 - "Community 523" -Cohesion: 0.25 -Nodes (8): check_cache(), Read a file from the sandbox filesystem. Args: path: Absolute pa, List files in the workspace directory. Args: path: Directory pat, Upload a file to the sandbox filesystem. Use this to push data files (CSV,, Get a download link for a workspace file to share with the user. Use this, Check if a computed result exists in the cache. Use before executing expens, read_sandbox_file(), upload_to_sandbox() +Cohesion: 0.43 +Nodes (4): _extractCredential(), _introspectUrl(), introspectUser(), _serviceToken() ### Community 524 - "Community 524" -Cohesion: 0.11 -Nodes (19): introspectToken(), verifyAccessToken(), introspect(), Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers lines 48-49: jwt.ExpiredSignatureError., Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers lines 48-49: jwt.ExpiredSignatureError. (+11 more) +Cohesion: 0.1 +Nodes (20): introspectToken(), verifyAccessToken(), introspect(), Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers line 16: empty password raises ValueError., Covers lines 48-49: jwt.ExpiredSignatureError., Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers lines 45-51: verifyAccessToken with expired and invalid tokens. (+12 more) ### Community 525 - "Community 525" -Cohesion: 0.25 -Nodes (9): list_files(), List files in the workspace directory. Args: path: Directory pat, List files in the workspace directory. Args: path: Directory pat, Get a download link for a workspace file to share with the user. Use this, Get a download link for a workspace file to share with the user. Use this, List files in the workspace directory. Args: path: Directory pat, List files in the workspace directory. Args: path: Directory pat, List files in the workspace directory. Args: path: Directory pat (+1 more) +Cohesion: 0.11 +Nodes (21): list_files(), Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, List files in the workspace directory. Args: path: Directory pat, List files in the workspace directory. Args: path: Directory pat (+13 more) ### Community 526 - "Community 526" Cohesion: 0.33 Nodes (7): buildKey(), clearAll(), getMatrix(), invalidateUser(), runAwait(), main(), One-shot: renormalize stored embeddings to unit norm. Usage: python scripts/back ### Community 528 - "Community 528" -Cohesion: 0.29 -Nodes (6): Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404. +Cohesion: 0.18 +Nodes (11): Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback. (+3 more) ### Community 529 - "Community 529" -Cohesion: 0.22 -Nodes (9): Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, List files in the workspace directory. Args: path: Directory pat, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Get a download link for a workspace file to share with the user. Use this (+1 more) - -### Community 530 - "Community 530" -Cohesion: 0.39 -Nodes (8): _build_error_response(), buildErrorResponse(), generic_exception_handler(), genericExceptionHandler(), http_exception_handler(), httpExceptionHandler(), validation_exception_handler(), validationExceptionHandler() +Cohesion: 0.12 +Nodes (14): Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false. (+6 more) ### Community 532 - "Community 532" Cohesion: 0.5 @@ -1802,24 +1834,28 @@ Cohesion: 0.5 Nodes (4): LATER (P2 — when touching these files), NOW (P0 — fix before next release), Priority Matrix, SOON (P1 — fix within 2 weeks) ### Community 535 - "Community 535" -Cohesion: 0.22 -Nodes (6): Store a memory about the user's preferences, analysis results, or feedback., save_memory(), batchCosineSimilarity(), contentHash(), embed(), normalizeRows() +Cohesion: 0.29 +Nodes (6): Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers line 16: empty password raises ValueError. ### Community 536 - "Community 536" -Cohesion: 0.19 -Nodes (8): AuthenticationService, initialize(), initialize(), MCPDetectMiddleware, StocksAPIService, getApp(), runAll(), ServiceManager +Cohesion: 0.22 +Nodes (6): initialize(), initialize(), memoryMaintenance(), OrunmilaService, getApp(), runAll() ### Community 538 - "Community 538" -Cohesion: 0.4 -Nodes (5): Category 8: Testing Gaps (MEDIUM), Issue 8.1 — No integration tests for full request lifecycle, Issue 8.2 — No tests for scraper, stocks query, or cache, Issue 8.3 — No tests for Google OAuth callback, Issue 8.4 — No tests for session cleanup +Cohesion: 0.14 +Nodes (13): dispatchToolCall(), execute_code(), list_files(), Read a file from the workspace. Args: path: Path to the file (e., Write a file to the workspace. Use this to save data files (CSV, JSON, scri, List files in the workspace directory. Args: path: Directory pat, Get a download link for a workspace file to share with the user. Use this, Search user's saved memories, preferences, and past analysis context. Use (+5 more) + +### Community 539 - "Community 539" +Cohesion: 0.22 +Nodes (8): 1. Feature inventory + nav structure, 2. User lifecycle end-to-end, 3. Wallet API reference, 4. Data model inference (from payloads, no DB access), 5. Product logic, 5b. Gaps / unverified (do not treat as fact), 6. Concrete Mansa proposal (build first → later; minimal sketches), Investidor10 Wallet — Empirical Research for Mansa ### Community 540 - "Community 540" Cohesion: 0.29 Nodes (6): code:python (import argparse), code:bash (git add bench/bench_memory_vector.py), Global Constraints, Lane 4: Before/After Bench Implementation Plan, Task 1: Bench script with synthetic scale sweep, Task 2: Record baseline and post-lane numbers ### Community 541 - "Community 541" -Cohesion: 0.24 -Nodes (5): lifespan(), status(), checkDatabaseConnection(), checkSingleDb(), runMigrations() +Cohesion: 0.2 +Nodes (9): Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing., Covers lines 66, 68-72, 74: GET /user/sessions., Covers lines 66, 68-72, 74: full sessions listing. (+1 more) ### Community 542 - "Community 542" Cohesion: 0.5 @@ -1829,13 +1865,17 @@ Nodes (3): at, label, rows Cohesion: 0.2 Nodes (9): Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132). (+1 more) +### Community 544 - "Community 544" +Cohesion: 0.29 +Nodes (6): Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 48-49: jwt.ExpiredSignatureError. + ### Community 545 - "Community 545" Cohesion: 0.29 Nodes (7): code:python (def test_split_cliff_no_fake_loss_on_adjusted_series(monkeyp), code:python (def test_snapshot_includes_received_and_cash_gain(dbSession,), code:python (def test_history_merges_dividend_receipts(dbSession, sampleU), code:python (def test_ex_div_methodology_decides_received_stacking(dbSess), code:python (def ex_div_smoothing_verdict(padrao_before: float, padrao_af), code:bash (git add main/app/wallet/manager.py main/controller/wallet_co), Task 12: Split-cliff regression test + snapshot/history dividend extension + final gate ### Community 546 - "Community 546" -Cohesion: 0.29 -Nodes (6): Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers line 16: empty password raises ValueError. +Cohesion: 0.16 +Nodes (14): execute_code(), Store a value in the harness state for this session. Use this to save inter, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Read a file from the workspace. Args: path: Path to the file (e., Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis, (+6 more) ### Community 547 - "Community 547" Cohesion: 0.33 @@ -1891,23 +1931,19 @@ Nodes (4): code:python (import pytest), code:python (import logging), code:bash ### Community 560 - "Community 560" Cohesion: 0.29 -Nodes (6): Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 48-49: jwt.ExpiredSignatureError. - -### Community 561 - "Community 561" -Cohesion: 0.29 Nodes (6): Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation., Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation., Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation., Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation., Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation., Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation. ### Community 562 - "Community 562" -Cohesion: 0.4 -Nodes (5): initialize(), P5: register the scraper cron jobs on the shared scheduler. Kept in this, registerScraperJobs(), runScraper(), ScraperService +Cohesion: 0.29 +Nodes (6): GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422. ### Community 563 - "Community 563" Cohesion: 0.33 -Nodes (6): Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., TestAddRoleToUser +Nodes (5): Tests for optimized search filtering, Tests for optimized search filtering, Filter should use ticker index for O(1) lookup, Filter should use ticker index for O(1) lookup, TestFilterBySearchTerms ### Community 564 - "Community 564" -Cohesion: 0.33 -Nodes (5): Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added. +Cohesion: 0.22 +Nodes (6): Store a memory about the user's preferences, analysis results, or feedback., save_memory(), batchCosineSimilarity(), contentHash(), embed(), normalizeRows() ### Community 565 - "Community 565" Cohesion: 0.33 @@ -1922,79 +1958,139 @@ Cohesion: 0.14 Nodes (11): Integration tests for the verifyAPIKey function., Test successful API key verification., Integration tests for the verifyAPIKey function., Test API key verification when quota is exceeded., Test API key verification with invalid key., Test API key verification with missing key., Test API key verification with invalid key., Test that API key system can be disabled. (+3 more) ### Community 568 - "Community 568" -Cohesion: 0.33 -Nodes (5): Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers lines 42-44: session validation fails. +Cohesion: 0.29 +Nodes (6): Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404. ### Community 569 - "Community 569" Cohesion: 0.33 -Nodes (5): Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails. +Nodes (3): initialize(), MCPDetectMiddleware, StocksAPIService ### Community 570 - "Community 570" -Cohesion: 0.18 -Nodes (8): memoryMaintenance(), Even with low score, if accessed → not archived., Even with low score, if accessed → not archived., Already archived memories are skipped., Already archived memories are skipped., _create(), After 10 cycles, preference (0.99^10) > context (0.90^10)., TestTypeAwareDecay +Cohesion: 0.33 +Nodes (6): 2.2 Tooling, code:bash (# Windows/Docker Desktop: do NOT use --network host (the Lin), code:bash (curl -s -o /dev/null -w '%header{x-cache-status}\n' -H "X-AP), code:bash (docker stats --no-stream --format "{{.Name}},{{.CPUPerc}},{{), code:bash (docker exec api sh -c "pidstat -w -p 1 1 30" # if sysst), code:block15 (tests/perf/nginx/) ### Community 571 - "Community 571" -Cohesion: 0.4 -Nodes (5): Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, TestVerifyAPIKey +Cohesion: 0.29 +Nodes (7): check_cache(), Read a file from the sandbox filesystem. Args: path: Absolute pa, List files in the workspace directory. Args: path: Directory pat, Upload a file to the sandbox filesystem. Use this to push data files (CSV,, Check if a computed result exists in the cache. Use before executing expens, read_sandbox_file(), upload_to_sandbox() ### Community 572 - "Community 572" -Cohesion: 0.5 -Nodes (4): code:python ("""add wallet_holdings and wallet_lots tables), code:python (import main.models.wallet), code:bash (git add migrations/versions/wallet_tables_20260904_add_walle), Task 2: Alembic migration for wallet tables +Cohesion: 0.27 +Nodes (4): Test that invalid API key returns zero rows affected., Test that multiple API keys have independent quotas., Test that invalid API key returns zero rows affected., Test that multiple API keys have independent quotas. + +### Community 573 - "Community 573" +Cohesion: 0.29 +Nodes (7): Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the workspace. Args: path: Path to the file (e., read_file() ### Community 574 - "Community 574" -Cohesion: 0.33 -Nodes (10): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), rebuildAbbrevs() (+2 more) +Cohesion: 0.22 +Nodes (7): Integration tests for all query optimizations, Integration tests for all query optimizations, All optimizations should be implemented, All optimizations should be implemented, Query filter should use ticker index, Query filter should use ticker index, TestQueryOptimization ### Community 575 - "Community 575" -Cohesion: 0.33 -Nodes (6): dispatchToolCall must route memory tool names via TOOL_REGISTRY., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., TestDispatchRoutesMemoryTools +Cohesion: 0.12 +Nodes (7): TestAgentSandboxIntegration, makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., TestMakeChatIncludesMemoryTools + +### Community 576 - "Community 576" +Cohesion: 0.5 +Nodes (4): code:python ("""add wallet_holdings and wallet_lots tables), code:python (import main.models.wallet), code:bash (git add migrations/versions/wallet_tables_20260904_add_walle), Task 2: Alembic migration for wallet tables ### Community 577 - "Community 577" Cohesion: 0.33 Nodes (5): replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34). +### Community 578 - "Community 578" +Cohesion: 0.33 +Nodes (6): Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., TestAddRoleToUser + +### Community 579 - "Community 579" +Cohesion: 0.33 +Nodes (5): 0.1 Rev 2 — do FIRST: app cache TTL increase + `/fields` cache (no nginx, no Redis), 0. Purpose and constraints, Next actions (not in scope here), nginx Scaling Plan — reverse proxy + response cache for `/stocks`, and the multi-server evolution, Open decisions (blocking or product-owned) + ### Community 580 - "Community 580" -Cohesion: 0.14 -Nodes (9): Verify that getSession() returns per-thread Session instances., Calling getSession() twice in the same thread returns the same object., Two threads must NOT share a Session object., With 20 concurrent threads, every thread must get its own Session., The returned object must be a real requests.Session., TestGetSession, get_session(), Return a requests.Session for the current thread. Sessions are created la (+1 more) +Cohesion: 0.33 +Nodes (6): 2.2 Tooling, code:bash (# Windows/Docker Desktop: do NOT use --network host (the Lin), code:bash (curl -s -o /dev/null -w '%header{x-cache-status}\n' -H "X-AP), code:bash (docker stats --no-stream --format "{{.Name}},{{.CPUPerc}},{{), code:bash (docker exec api sh -c "pidstat -w -p 1 1 30" # if sysst), code:block15 (tests/perf/nginx/) ### Community 582 - "Community 582" Cohesion: 0.22 Nodes (8): 1. Feature inventory + nav structure, 2. User lifecycle end-to-end, 3. Wallet API reference, 4. Data model inference (from payloads, no DB access), 5. Product logic, 5b. Gaps / unverified (do not treat as fact), 6. Concrete Mansa proposal (build first → later; minimal sketches), Investidor10 Wallet — Empirical Research for Mansa ### Community 583 - "Community 583" -Cohesion: 0.22 -Nodes (8): 1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield), 1.2 Non-functional, 1. Requirements, 2. Domain model, 3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout), 4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase), 5. Risks / assumptions (honest flags carried over — do not treat as fact), Mansa Wallet — Spec-Driven Implementation Spec +Cohesion: 0.13 +Nodes (14): 1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield), 1.2 Non-functional, 1. Requirements, 2. Domain model, 3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout), 4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase), 5. Risks / assumptions (honest flags carried over — do not treat as fact), 6.1 DB & migrations (`user_db`) — READY, 2 actions (+6 more) + +### Community 584 - "Community 584" +Cohesion: 0.33 +Nodes (5): Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added. + +### Community 585 - "Community 585" +Cohesion: 0.33 +Nodes (5): Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Regression: HarnessState must never leak into tool signatures., Regression: HarnessState must never leak into tool signatures., TestGeminiCompatibility ### Community 587 - "Community 587" -Cohesion: 0.29 -Nodes (6): GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422. +Cohesion: 0.4 +Nodes (5): Category 8: Testing Gaps (MEDIUM), Issue 8.1 — No integration tests for full request lifecycle, Issue 8.2 — No tests for scraper, stocks query, or cache, Issue 8.3 — No tests for Google OAuth callback, Issue 8.4 — No tests for session cleanup + +### Community 588 - "Community 588" +Cohesion: 0.33 +Nodes (5): Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers lines 42-44: session validation fails. + +### Community 589 - "Community 589" +Cohesion: 0.33 +Nodes (6): dispatchToolCall must route memory tool names via TOOL_REGISTRY., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., TestDispatchRoutesMemoryTools ### Community 590 - "Community 590" -Cohesion: 0.22 -Nodes (7): Integration tests for all query optimizations, Integration tests for all query optimizations, All optimizations should be implemented, All optimizations should be implemented, Query filter should use ticker index, Query filter should use ticker index, TestQueryOptimization +Cohesion: 0.4 +Nodes (5): initialize(), P5: register the scraper cron jobs on the shared scheduler. Kept in this, registerScraperJobs(), runScraper(), ScraperService + +### Community 591 - "Community 591" +Cohesion: 0.4 +Nodes (4): 0. Purpose and constraints, Next actions (not in scope here), nginx Scaling Plan — reverse proxy + response cache for `/stocks`, and the multi-server evolution, Open decisions (blocking or product-owned) + +### Community 592 - "Community 592" +Cohesion: 0.33 +Nodes (5): Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails. + +### Community 593 - "Community 593" +Cohesion: 0.5 +Nodes (4): 1.3 Phase P0 — nginx service + config skeleton, code:yaml (nginx:), code:nginx (proxy_cache_path /var/cache/nginx/stocks), code:nginx (upstream stocks_api {) + +### Community 594 - "Community 594" +Cohesion: 0.5 +Nodes (4): 1.4 Phase P1 — cache locations, TTL table, directives, code:nginx (proxy_pass http://stocks_api;), code:nginx (server {), code:bash (K=sk_test_...; U='http://localhost/stocks/historical?search=) ### Community 595 - "Community 595" -Cohesion: 0.67 -Nodes (3): checkServiceConnection — success, not found, errors., checkServiceConnection — success, not found, errors., TestCheckServiceConnection +Cohesion: 0.33 +Nodes (4): Integration tests for all query optimizations, All optimizations should be implemented, Query filter should use ticker index, TestQueryOptimization -### Community 596 - "Community 596" -Cohesion: 0.67 -Nodes (3): checkMySqlConnection — success, errors, engine=None paths., checkMySqlConnection — success, errors, engine=None paths., TestCheckMySqlConnection +### Community 597 - "Community 597" +Cohesion: 0.5 +Nodes (4): 1.3 Phase P0 — nginx service + config skeleton, code:yaml (nginx:), code:nginx (proxy_cache_path /var/cache/nginx/stocks), code:nginx (upstream stocks_api {) + +### Community 598 - "Community 598" +Cohesion: 0.5 +Nodes (4): 1.4 Phase P1 — cache locations, TTL table, directives, code:nginx (proxy_pass http://stocks_api;), code:nginx (server {), code:bash (K=sk_test_...; U='http://localhost/stocks/historical?search=) + +### Community 603 - "Community 603" +Cohesion: 0.4 +Nodes (5): Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, TestVerifyAPIKey + +### Community 605 - "Community 605" +Cohesion: 0.38 +Nodes (6): create_memory(), createMemory(), _downloadModel(), embed(), getEmbeddingModel(), executeMemoryTool() ## Knowledge Gaps -- **3075 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+3070 more) +- **3349 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+3344 more) These have ≤1 connection - possible missing edges or undocumented components. -- **231 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **227 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `Pytest Testing` connect `Community 251` to `Authentication Core`, `Frontend Components`, `Community 129`, `Data Models & Types`, `Community 131`, `Community 518`, `Community 135`, `Community 138`, `Community 140`, `Community 527`, `Community 18`, `Community 147`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 29`, `Community 32`, `Community 33`, `Community 162`, `Community 40`, `Community 43`, `Community 44`, `Community 45`, `Community 172`, `Community 49`, `Community 51`, `Community 183`, `Community 184`, `Community 186`, `Community 59`, `Community 188`, `Community 61`, `Community 570`, `Community 67`, `Community 475`, `Community 93`, `Community 477`, `Community 482`, `Community 100`, `Community 500`, `Community 502`, `Community 120`?** - _High betweenness centrality (0.079) - this node is a cross-community bridge._ -- **Why does `FastAPI` connect `Community 482` to `Community 129`, `Community 517`, `Community 519`, `Community 530`, `Community 18`, `Community 147`, `Community 536`, `Community 26`, `Community 541`, `Community 33`, `Community 34`, `Community 40`, `Community 169`, `Community 43`, `Community 45`, `Community 58`, `Community 68`, `Community 71`, `Community 84`, `Community 215`, `Community 475`, `Community 477`, `Community 491`, `Community 497`, `Community 500`, `Community 501`, `Community 120`?** +- **Why does `Pytest Testing` connect `Community 138` to `Authentication Core`, `Frontend Components`, `Community 129`, `Data Models & Types`, `Community 518`, `Community 135`, `Community 140`, `Community 527`, `Community 16`, `Community 18`, `Community 147`, `Community 24`, `Community 25`, `Community 27`, `Community 29`, `Community 32`, `Community 33`, `Community 40`, `Community 43`, `Community 44`, `Community 45`, `Community 49`, `Community 51`, `Community 59`, `Community 61`, `Community 67`, `Community 84`, `Community 120`, `Community 93`, `Community 477`, `Community 482`, `Community 100`, `Community 101`, `Community 102`, `Community 104`, `Community 500`, `Community 502`, `Community 504`, `Community 122`, `Community 251`?** + _High betweenness centrality (0.096) - this node is a cross-community bridge._ +- **Why does `FastAPI` connect `Community 482` to `Community 129`, `Community 517`, `Community 519`, `Community 523`, `Community 18`, `Community 147`, `Community 536`, `Community 157`, `Community 33`, `Community 34`, `Community 40`, `Community 43`, `Community 172`, `Community 45`, `Community 54`, `Community 58`, `Community 59`, `Community 68`, `Community 71`, `Community 84`, `Community 120`, `Community 477`, `Community 500`, `Community 501`, `Community 504`?** _High betweenness centrality (0.044) - this node is a cross-community bridge._ -- **Why does `UserManager` connect `Community 498` to `Prometheus Agent`, `Community 519`, `Prometheus Memory`, `Community 524`, `Community 141`, `User Roles & Permissions`, `Community 16`, `Community 22`, `Community 28`, `Community 37`, `Community 45`, `Community 47`, `Community 178`, `Community 563`, `Community 565`, `Community 58`, `Community 571`, `Community 61`, `Community 67`, `Community 68`, `Community 86`, `Community 221`, `Community 99`, `Community 231`, `Community 104`, `Community 107`, `Community 493`, `Community 112`, `Community 114`, `Community 120`?** - _High betweenness centrality (0.042) - this node is a cross-community bridge._ +- **Why does `UserManager` connect `Community 45` to `Community 256`, `Prometheus Agent`, `Community 519`, `Prometheus Memory`, `Community 524`, `Community 141`, `User Roles & Permissions`, `Community 148`, `Community 22`, `Community 28`, `Community 541`, `Community 37`, `Community 172`, `Community 47`, `Community 565`, `Community 58`, `Community 61`, `Community 578`, `Community 67`, `Community 603`, `Community 221`, `Community 99`, `Community 105`, `Community 107`, `Community 493`, `Community 112`, `Community 114`, `Community 120`, `Community 511`?** + _High betweenness centrality (0.031) - this node is a cross-community bridge._ - **Are the 72 inferred relationships involving `StocksCacheManager` (e.g. with `TestStocksCacheManager` and `TestVerifyAPIKey`) actually correct?** _`StocksCacheManager` has 72 INFERRED edges - model-reasoned connections that need verification._ - **Are the 52 inferred relationships involving `HarnessState` (e.g. with `Prometheus` and `.streamMessage()`) actually correct?** diff --git a/graphify-out/graph.json b/graphify-out/graph.json index 3d3333dc..d2f8a8a3 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -199,7 +199,7 @@ "label": "StocksApiSettings", "file_type": "code", "source_file": "config.py", - "source_location": "L50", + "source_location": "L49", "id": "server_config_stocksapisettings", "community": 102, "norm_label": "stocksapisettings" @@ -208,7 +208,7 @@ "label": "OrunmilaSettings", "file_type": "code", "source_file": "config.py", - "source_location": "L59", + "source_location": "L58", "id": "server_config_orunmilasettings", "community": 102, "norm_label": "orunmilasettings" @@ -217,7 +217,7 @@ "label": "ScraperSettings", "file_type": "code", "source_file": "config.py", - "source_location": "L76", + "source_location": "L75", "id": "server_config_scrapersettings", "community": 102, "norm_label": "scrapersettings" @@ -226,7 +226,7 @@ "label": "DiscordSettings", "file_type": "code", "source_file": "config.py", - "source_location": "L85", + "source_location": "L84", "id": "server_config_discordsettings", "community": 102, "norm_label": "discordsettings" @@ -235,7 +235,7 @@ "label": "Config", "file_type": "code", "source_file": "config.py", - "source_location": "L91", + "source_location": "L90", "id": "server_config_config", "community": 45, "norm_label": "config" @@ -244,7 +244,7 @@ "label": "getSession()", "file_type": "code", "source_file": "config.py", - "source_location": "L129", + "source_location": "L128", "id": "server_config_getsession", "community": 102, "norm_label": "getsession()" @@ -253,7 +253,7 @@ "label": "getStocksSession()", "file_type": "code", "source_file": "config.py", - "source_location": "L137", + "source_location": "L136", "id": "server_config_getstockssession", "community": 102, "norm_label": "getstockssession()" @@ -264,7 +264,7 @@ "source_file": "run.py", "source_location": "L1", "id": "run_py", - "community": 541, + "community": 59, "norm_label": "run.py" }, { @@ -273,7 +273,7 @@ "source_file": "run.py", "source_location": "L28", "id": "server_run_lifespan", - "community": 541, + "community": 59, "norm_label": "lifespan()" }, { @@ -282,7 +282,7 @@ "source_file": "run.py", "source_location": "L73", "id": "server_run_health", - "community": 541, + "community": 59, "norm_label": "health()" }, { @@ -291,7 +291,7 @@ "source_file": "run.py", "source_location": "L78", "id": "server_run_status", - "community": 541, + "community": 59, "norm_label": "status()" }, { @@ -300,7 +300,7 @@ "source_file": "run.py", "source_location": "L112", "id": "server_run_triggerscraper", - "community": 541, + "community": 59, "norm_label": "triggerscraper()" }, { @@ -2190,7 +2190,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L1", "id": "main_app_authentication_authentication_py", - "community": 68, + "community": 172, "norm_label": "authentication.py" }, { @@ -2199,7 +2199,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L14", "id": "authentication_authentication_authenticationmanager", - "community": 68, + "community": 172, "norm_label": "authenticationmanager" }, { @@ -2208,7 +2208,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L16", "id": "authentication_authentication_createuseraccount", - "community": 43, + "community": 172, "norm_label": "createuseraccount()" }, { @@ -2217,7 +2217,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L51", "id": "authentication_authentication_authenticategoogleuser", - "community": 68, + "community": 172, "norm_label": "authenticategoogleuser()" }, { @@ -2226,7 +2226,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L65", "id": "authentication_authentication_authenticateuser", - "community": 68, + "community": 172, "norm_label": "authenticateuser()" }, { @@ -2235,7 +2235,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L79", "id": "authentication_authentication_resolveuniqueusername", - "community": 68, + "community": 172, "norm_label": "resolveuniqueusername()" }, { @@ -2260,7 +2260,7 @@ "label": "introspectToken()", "file_type": "code", "source_file": "main/app/authentication/introspect.py", - "source_location": "L16", + "source_location": "L14", "id": "authentication_introspect_introspecttoken", "community": 524, "norm_label": "introspecttoken()" @@ -2289,7 +2289,7 @@ "source_file": "main/app/authentication/session.py", "source_location": "L30", "id": "authentication_session_sessionmanager", - "community": 68, + "community": 172, "norm_label": "sessionmanager" }, { @@ -2451,7 +2451,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L1", "id": "main_app_orunmila_agent_py", - "community": 256, + "community": 497, "norm_label": "agent.py" }, { @@ -2460,7 +2460,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L25", "id": "orunmila_agent_safefilter", - "community": 256, + "community": 497, "norm_label": "safefilter()" }, { @@ -2469,7 +2469,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L31", "id": "orunmila_agent_persistevent", - "community": 256, + "community": 497, "norm_label": "persistevent()" }, { @@ -2478,7 +2478,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L45", "id": "orunmila_agent_getclient", - "community": 256, + "community": 497, "norm_label": "getclient()" }, { @@ -2487,7 +2487,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L208", "id": "orunmila_agent_orunmila", - "community": 256, + "community": 45, "norm_label": "orunmila" }, { @@ -2496,7 +2496,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L209", "id": "orunmila_agent_orunmila_init", - "community": 256, + "community": 497, "norm_label": ".__init__()" }, { @@ -2505,7 +2505,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L213", "id": "orunmila_agent_buildsystemprompt", - "community": 256, + "community": 497, "norm_label": "buildsystemprompt()" }, { @@ -2514,7 +2514,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L242", "id": "orunmila_agent_orunmila_makechat", - "community": 256, + "community": 497, "norm_label": ".makechat()" }, { @@ -2523,7 +2523,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L253", "id": "orunmila_agent_orunmila_streammessage", - "community": 256, + "community": 497, "norm_label": ".streammessage()" }, { @@ -2532,7 +2532,7 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L1", "id": "main_app_orunmila_chat_py", - "community": 136, + "community": 231, "norm_label": "chat.py" }, { @@ -2550,61 +2550,61 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L15", "id": "orunmila_chat_getusersessions", - "community": 136, + "community": 231, "norm_label": "getusersessions()" }, { "label": "createSession()", "file_type": "code", "source_file": "main/app/orunmila/chat.py", - "source_location": "L33", + "source_location": "L34", "id": "orunmila_chat_createsession", - "community": 136, + "community": 231, "norm_label": "createsession()" }, { "label": "updateSessionTitle()", "file_type": "code", "source_file": "main/app/orunmila/chat.py", - "source_location": "L41", + "source_location": "L42", "id": "orunmila_chat_updatesessiontitle", - "community": 136, + "community": 231, "norm_label": "updatesessiontitle()" }, { "label": "appendHistory()", "file_type": "code", "source_file": "main/app/orunmila/chat.py", - "source_location": "L52", + "source_location": "L53", "id": "orunmila_chat_appendhistory", - "community": 136, + "community": 231, "norm_label": "appendhistory()" }, { "label": "getHistory()", "file_type": "code", "source_file": "main/app/orunmila/chat.py", - "source_location": "L71", + "source_location": "L72", "id": "orunmila_chat_gethistory", - "community": 136, + "community": 231, "norm_label": "gethistory()" }, { "label": "deleteSession()", "file_type": "code", "source_file": "main/app/orunmila/chat.py", - "source_location": "L92", + "source_location": "L93", "id": "orunmila_chat_deletesession", - "community": 136, + "community": 231, "norm_label": "deletesession()" }, { "label": "verifySessionOwnership()", "file_type": "code", "source_file": "main/app/orunmila/chat.py", - "source_location": "L106", + "source_location": "L107", "id": "orunmila_chat_verifysessionownership", - "community": 136, + "community": 231, "norm_label": "verifysessionownership()" }, { @@ -2613,7 +2613,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L1", "id": "main_app_orunmila_compact_py", - "community": 474, + "community": 162, "norm_label": "compact.py" }, { @@ -2622,7 +2622,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L35", "id": "orunmila_compact_gettokenizer", - "community": 474, + "community": 162, "norm_label": "gettokenizer()" }, { @@ -2631,7 +2631,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L47", "id": "orunmila_compact_counttokens", - "community": 474, + "community": 162, "norm_label": "counttokens()" }, { @@ -2640,7 +2640,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L64", "id": "orunmila_compact_getstocksfieldsurl", - "community": 474, + "community": 162, "norm_label": "getstocksfieldsurl()" }, { @@ -2649,7 +2649,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L68", "id": "orunmila_compact_istransientfieldserror", - "community": 474, + "community": 162, "norm_label": "istransientfieldserror()" }, { @@ -2658,7 +2658,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L83", "id": "orunmila_compact_fetchfieldspayload", - "community": 474, + "community": 162, "norm_label": "fetchfieldspayload()" }, { @@ -2667,7 +2667,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L89", "id": "orunmila_compact_loadfielddata", - "community": 474, + "community": 162, "norm_label": "loadfielddata()" }, { @@ -2676,7 +2676,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L105", "id": "orunmila_compact_getmetricregex", - "community": 474, + "community": 162, "norm_label": "getmetricregex()" }, { @@ -2685,7 +2685,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L119", "id": "orunmila_compact_dedup", - "community": 474, + "community": 162, "norm_label": "dedup()" }, { @@ -2694,7 +2694,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L123", "id": "orunmila_compact_extracttickers", - "community": 474, + "community": 162, "norm_label": "extracttickers()" }, { @@ -2703,7 +2703,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L127", "id": "orunmila_compact_extractmetrics", - "community": 474, + "community": 162, "norm_label": "extractmetrics()" }, { @@ -2712,7 +2712,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L131", "id": "orunmila_compact_extractdecisions", - "community": 474, + "community": 162, "norm_label": "extractdecisions()" }, { @@ -2721,7 +2721,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L145", "id": "orunmila_compact_extractsnapshots", - "community": 474, + "community": 162, "norm_label": "extractsnapshots()" }, { @@ -2730,7 +2730,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L158", "id": "orunmila_compact_extracttoolcalls", - "community": 474, + "community": 162, "norm_label": "extracttoolcalls()" }, { @@ -2739,7 +2739,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L174", "id": "orunmila_compact_buildsummary", - "community": 474, + "community": 162, "norm_label": "buildsummary()" }, { @@ -2748,7 +2748,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L195", "id": "orunmila_compact_orunmilacompactor", - "community": 256, + "community": 497, "norm_label": "orunmilacompactor" }, { @@ -2757,7 +2757,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L196", "id": "orunmila_compact_orunmilacompactor_shouldcompact", - "community": 256, + "community": 497, "norm_label": ".shouldcompact()" }, { @@ -2766,7 +2766,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L213", "id": "orunmila_compact_orunmilacompactor_getcompactablechunk", - "community": 256, + "community": 497, "norm_label": ".getcompactablechunk()" }, { @@ -2775,7 +2775,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L222", "id": "orunmila_compact_orunmilacompactor_extractepisode", - "community": 474, + "community": 162, "norm_label": ".extractepisode()" }, { @@ -2784,7 +2784,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L244", "id": "orunmila_compact_orunmilacompactor_consolidate", - "community": 256, + "community": 497, "norm_label": ".consolidate()" }, { @@ -2793,7 +2793,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L271", "id": "orunmila_compact_orunmilacompactor_compact", - "community": 256, + "community": 497, "norm_label": ".compact()" }, { @@ -2802,7 +2802,7 @@ "source_file": "main/app/orunmila/compact.py", "source_location": "L310", "id": "orunmila_compact_orunmilacompactor_getepisodes", - "community": 256, + "community": 497, "norm_label": ".getepisodes()" }, { @@ -2955,7 +2955,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L90", "id": "orunmila_memory_newtokencache", - "community": 256, + "community": 497, "norm_label": "newtokencache()" }, { @@ -3027,7 +3027,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L179", "id": "orunmila_memory_sumtokens", - "community": 137, + "community": 162, "norm_label": "sumtokens()" }, { @@ -3171,7 +3171,7 @@ "source_file": "main/app/orunmila/sandbox.py", "source_location": "L51", "id": "orunmila_sandbox_sandboxmanager", - "community": 234, + "community": 45, "norm_label": "sandboxmanager" }, { @@ -3396,7 +3396,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L1", "id": "main_app_orunmila_tools_py", - "community": 495, + "community": 538, "norm_label": "tools.py" }, { @@ -3405,7 +3405,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L20", "id": "orunmila_tools_search_memory", - "community": 495, + "community": 538, "norm_label": "search_memory()" }, { @@ -3414,7 +3414,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L51", "id": "orunmila_tools_save_memory", - "community": 535, + "community": 564, "norm_label": "save_memory()" }, { @@ -3423,7 +3423,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L93", "id": "orunmila_tools_execute_code", - "community": 495, + "community": 538, "norm_label": "execute_code()" }, { @@ -3432,7 +3432,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L114", "id": "orunmila_tools_read_file", - "community": 495, + "community": 538, "norm_label": "read_file()" }, { @@ -3441,7 +3441,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L128", "id": "orunmila_tools_write_file", - "community": 495, + "community": 538, "norm_label": "write_file()" }, { @@ -3450,7 +3450,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L144", "id": "orunmila_tools_list_files", - "community": 495, + "community": 538, "norm_label": "list_files()" }, { @@ -3459,7 +3459,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L157", "id": "orunmila_tools_serve_file", - "community": 495, + "community": 538, "norm_label": "serve_file()" }, { @@ -3468,7 +3468,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L190", "id": "orunmila_tools_dispatchtoolcall", - "community": 495, + "community": 538, "norm_label": "dispatchtoolcall()" }, { @@ -3477,7 +3477,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L21", "id": "orunmila_tools_rationale_21", - "community": 495, + "community": 538, "norm_label": "search user's saved memories, preferences, and past analysis context. use" }, { @@ -3486,7 +3486,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L52", "id": "orunmila_tools_rationale_52", - "community": 535, + "community": 564, "norm_label": "store a memory about the user's preferences, analysis results, or feedback." }, { @@ -3495,7 +3495,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L94", "id": "orunmila_tools_rationale_94", - "community": 495, + "community": 538, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis," }, { @@ -3504,7 +3504,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L115", "id": "orunmila_tools_rationale_115", - "community": 495, + "community": 538, "norm_label": "read a file from the workspace. args: path: path to the file (e." }, { @@ -3513,7 +3513,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L129", "id": "orunmila_tools_rationale_129", - "community": 495, + "community": 538, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri" }, { @@ -3522,7 +3522,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L145", "id": "orunmila_tools_rationale_145", - "community": 495, + "community": 538, "norm_label": "list files in the workspace directory. args: path: directory pat" }, { @@ -3531,7 +3531,7 @@ "source_file": "main/app/orunmila/tools.py", "source_location": "L158", "id": "orunmila_tools_rationale_158", - "community": 495, + "community": 538, "norm_label": "get a download link for a workspace file to share with the user. use this" }, { @@ -3540,7 +3540,7 @@ "source_file": "main/app/orunmila/vector.py", "source_location": "L1", "id": "main_app_orunmila_vector_py", - "community": 535, + "community": 564, "norm_label": "vector.py" }, { @@ -3549,7 +3549,7 @@ "source_file": "main/app/orunmila/vector.py", "source_location": "L10", "id": "orunmila_vector_normalizerows", - "community": 535, + "community": 564, "norm_label": "normalizerows()" }, { @@ -3558,7 +3558,7 @@ "source_file": "main/app/orunmila/vector.py", "source_location": "L15", "id": "orunmila_vector_embed", - "community": 535, + "community": 564, "norm_label": "embed()" }, { @@ -3567,7 +3567,7 @@ "source_file": "main/app/orunmila/vector.py", "source_location": "L19", "id": "orunmila_vector_decodeembeddings", - "community": 535, + "community": 564, "norm_label": "decodeembeddings()" }, { @@ -3576,7 +3576,7 @@ "source_file": "main/app/orunmila/vector.py", "source_location": "L41", "id": "orunmila_vector_batchcosinesimilarity", - "community": 535, + "community": 564, "norm_label": "batchcosinesimilarity()" }, { @@ -3585,7 +3585,7 @@ "source_file": "main/app/orunmila/vector.py", "source_location": "L51", "id": "orunmila_vector_contenthash", - "community": 535, + "community": 564, "norm_label": "contenthash()" }, { @@ -3594,7 +3594,7 @@ "source_file": "main/app/orunmila/vector.py", "source_location": "L55", "id": "orunmila_vector_tovectorstring", - "community": 535, + "community": 564, "norm_label": "tovectorstring()" }, { @@ -3603,7 +3603,7 @@ "source_file": "main/app/orunmila/vector.py", "source_location": "L59", "id": "orunmila_vector_fromvectorstring", - "community": 535, + "community": 564, "norm_label": "fromvectorstring()" }, { @@ -3639,7 +3639,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L42", "id": "scraper_b3_scraper_b3scraper", - "community": 21, + "community": 586, "norm_label": "b3scraper" }, { @@ -3711,7 +3711,7 @@ "source_file": "main/app/scraper_b3/scraper.py", "source_location": "L230", "id": "scraper_b3_scraper_b3scraper_historicalcotationprofits_oceans14", - "community": 21, + "community": 586, "norm_label": ".historicalcotationprofits_oceans14()" }, { @@ -3736,7 +3736,7 @@ "label": "stockNews()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L285", + "source_location": "L281", "id": "scraper_b3_scraper_stocknews", "community": 21, "norm_label": "stocknews()" @@ -3745,63 +3745,63 @@ "label": ".fundamentalIndicators()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L298", + "source_location": "L294", "id": "scraper_b3_scraper_b3scraper_fundamentalindicators", - "community": 21, + "community": 586, "norm_label": ".fundamentalindicators()" }, { "label": ".processTicker()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L421", + "source_location": "L417", "id": "scraper_b3_scraper_b3scraper_processticker", - "community": 21, + "community": 586, "norm_label": ".processticker()" }, { "label": ".scrapeStocks()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L452", + "source_location": "L448", "id": "scraper_b3_scraper_b3scraper_scrapestocks", - "community": 21, + "community": 586, "norm_label": ".scrapestocks()" }, { "label": ".reorderColumns()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L499", + "source_location": "L495", "id": "scraper_b3_scraper_b3scraper_reordercolumns", - "community": 21, + "community": 586, "norm_label": ".reordercolumns()" }, { "label": ".serializeComplexTypes()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L508", + "source_location": "L504", "id": "scraper_b3_scraper_b3scraper_serializecomplextypes", - "community": 21, + "community": 586, "norm_label": ".serializecomplextypes()" }, { "label": ".exportJson()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L527", + "source_location": "L523", "id": "scraper_b3_scraper_b3scraper_exportjson", - "community": 21, + "community": 586, "norm_label": ".exportjson()" }, { "label": ".exportMysql()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L535", + "source_location": "L531", "id": "scraper_b3_scraper_b3scraper_exportmysql", - "community": 21, + "community": 586, "norm_label": ".exportmysql()" }, { @@ -3835,7 +3835,7 @@ "label": "optimizeDtypes()", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L40", + "source_location": "L43", "id": "stocks_api_cache_optimizedtypes", "community": 82, "norm_label": "optimizedtypes()" @@ -3844,7 +3844,7 @@ "label": "arrowTypeFor()", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L60", + "source_location": "L63", "id": "stocks_api_cache_arrowtypefor", "community": 82, "norm_label": "arrowtypefor()" @@ -3853,7 +3853,7 @@ "label": "buildFeatherCache()", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L77", + "source_location": "L80", "id": "stocks_api_cache_buildfeathercache", "community": 82, "norm_label": "buildfeathercache()" @@ -3862,7 +3862,7 @@ "label": "tryBuildLock()", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L168", + "source_location": "L171", "id": "stocks_api_cache_trybuildlock", "community": 82, "norm_label": "trybuildlock()" @@ -3871,7 +3871,7 @@ "label": "sortCacheFrame()", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L185", + "source_location": "L188", "id": "stocks_api_cache_sortcacheframe", "community": 82, "norm_label": "sortcacheframe()" @@ -3880,16 +3880,25 @@ "label": "buildTickerIndex()", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L195", + "source_location": "L198", "id": "stocks_api_cache_buildtickerindex", "community": 82, "norm_label": "buildtickerindex()" }, + { + "label": "readFeatherDataFrame()", + "file_type": "code", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L207", + "id": "stocks_api_cache_readfeatherdataframe", + "community": 82, + "norm_label": "readfeatherdataframe()" + }, { "label": "StocksCacheManager", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L204", + "source_location": "L214", "id": "stocks_api_cache_stockscachemanager", "community": 42, "norm_label": "stockscachemanager" @@ -3898,7 +3907,7 @@ "label": ".__init__()", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L205", + "source_location": "L215", "id": "stocks_api_cache_stockscachemanager_init", "community": 42, "norm_label": ".__init__()" @@ -3907,7 +3916,7 @@ "label": ".snapshot()", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L213", + "source_location": "L223", "id": "stocks_api_cache_stockscachemanager_snapshot", "community": 42, "norm_label": ".snapshot()" @@ -3916,7 +3925,7 @@ "label": ".cacheScheduler()", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L217", + "source_location": "L227", "id": "stocks_api_cache_stockscachemanager_cachescheduler", "community": 82, "norm_label": ".cachescheduler()" @@ -3925,7 +3934,7 @@ "label": ".loadFromFeather()", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L228", + "source_location": "L238", "id": "stocks_api_cache_stockscachemanager_loadfromfeather", "community": 82, "norm_label": ".loadfromfeather()" @@ -3934,7 +3943,7 @@ "label": ".getCachedStocks()", "file_type": "code", "source_file": "main/app/stocks_api/cache.py", - "source_location": "L247", + "source_location": "L257", "id": "stocks_api_cache_stockscachemanager_getcachedstocks", "community": 82, "norm_label": ".getcachedstocks()" @@ -4132,7 +4141,7 @@ "label": "filterBySearchTerms()", "file_type": "code", "source_file": "main/app/stocks_api/query.py", - "source_location": "L153", + "source_location": "L156", "id": "stocks_api_query_filterbysearchterms", "community": 517, "norm_label": "filterbysearchterms()" @@ -4141,7 +4150,7 @@ "label": "queryHistorical()", "file_type": "code", "source_file": "main/app/stocks_api/query.py", - "source_location": "L171", + "source_location": "L174", "id": "stocks_api_query_queryhistorical", "community": 517, "norm_label": "queryhistorical()" @@ -4150,7 +4159,7 @@ "label": "queryFundamental()", "file_type": "code", "source_file": "main/app/stocks_api/query.py", - "source_location": "L228", + "source_location": "L231", "id": "stocks_api_query_queryfundamental", "community": 517, "norm_label": "queryfundamental()" @@ -4159,7 +4168,7 @@ "label": "queryCotations()", "file_type": "code", "source_file": "main/app/stocks_api/query.py", - "source_location": "L291", + "source_location": "L294", "id": "stocks_api_query_querycotations", "community": 517, "norm_label": "querycotations()" @@ -4168,7 +4177,7 @@ "label": "isTransientLiveError()", "file_type": "code", "source_file": "main/app/stocks_api/query.py", - "source_location": "L332", + "source_location": "L335", "id": "stocks_api_query_istransientliveerror", "community": 517, "norm_label": "istransientliveerror()" @@ -4177,7 +4186,7 @@ "label": "fetchLivePayload()", "file_type": "code", "source_file": "main/app/stocks_api/query.py", - "source_location": "L347", + "source_location": "L350", "id": "stocks_api_query_fetchlivepayload", "community": 517, "norm_label": "fetchlivepayload()" @@ -4186,7 +4195,7 @@ "label": "queryLiveCotation()", "file_type": "code", "source_file": "main/app/stocks_api/query.py", - "source_location": "L356", + "source_location": "L359", "id": "stocks_api_query_querylivecotation", "community": 517, "norm_label": "querylivecotation()" @@ -4197,7 +4206,7 @@ "source_file": "main/app/stocks_api/sync_cache.py", "source_location": "L1", "id": "main_app_stocks_api_sync_cache_py", - "community": 511, + "community": 82, "norm_label": "sync_cache.py" }, { @@ -4206,16 +4215,34 @@ "source_file": "main/app/stocks_api/sync_cache.py", "source_location": "L14", "id": "stocks_api_sync_cache_cache", - "community": 511, + "community": 82, "norm_label": "cache()" }, + { + "label": "clearEndpointCache()", + "file_type": "code", + "source_file": "main/app/stocks_api/sync_cache.py", + "source_location": "L37", + "id": "stocks_api_sync_cache_clearendpointcache", + "community": 82, + "norm_label": "clearendpointcache()" + }, + { + "label": "Drop every cached endpoint body \u2014 called when the feather frame is replaced.", + "file_type": "rationale", + "source_file": "main/app/stocks_api/sync_cache.py", + "source_location": "L38", + "id": "stocks_api_sync_cache_rationale_38", + "community": 82, + "norm_label": "drop every cached endpoint body \u2014 called when the feather frame is replaced." + }, { "label": "util.py", "file_type": "code", "source_file": "main/app/stocks_api/util.py", "source_location": "L1", "id": "main_app_stocks_api_util_py", - "community": 215, + "community": 54, "norm_label": "util.py" }, { @@ -4224,7 +4251,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L17", "id": "stocks_api_util_dedupabbrev", - "community": 215, + "community": 54, "norm_label": "dedupabbrev()" }, { @@ -4233,7 +4260,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L26", "id": "stocks_api_util_autoabbreviate", - "community": 215, + "community": 54, "norm_label": "autoabbreviate()" }, { @@ -4242,7 +4269,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L47", "id": "stocks_api_util_generateabbreviations", - "community": 215, + "community": 54, "norm_label": "generateabbreviations()" }, { @@ -4260,7 +4287,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L73", "id": "stocks_api_util_parsedate", - "community": 215, + "community": 54, "norm_label": "parsedate()" }, { @@ -4278,7 +4305,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L96", "id": "stocks_api_util_detectnestedfields", - "community": 215, + "community": 54, "norm_label": "detectnestedfields()" }, { @@ -4296,7 +4323,7 @@ "source_file": "main/app/user/user.py", "source_location": "L15", "id": "user_user_usermanager", - "community": 498, + "community": 45, "norm_label": "usermanager" }, { @@ -4330,7 +4357,7 @@ "label": "isSecureScheme()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L35", + "source_location": "L32", "id": "controller_authentication_controller_issecurescheme", "community": 58, "norm_label": "issecurescheme()" @@ -4339,7 +4366,7 @@ "label": "resolveCookieDomain()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L39", + "source_location": "L36", "id": "controller_authentication_controller_resolvecookiedomain", "community": 58, "norm_label": "resolvecookiedomain()" @@ -4348,7 +4375,7 @@ "label": "issueSessionCookie()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L44", + "source_location": "L41", "id": "controller_authentication_controller_issuesessioncookie", "community": 58, "norm_label": "issuesessioncookie()" @@ -4357,7 +4384,7 @@ "label": "health()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L65", + "source_location": "L62", "id": "controller_authentication_controller_health", "community": 58, "norm_label": "health()" @@ -4366,7 +4393,7 @@ "label": "register()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L71", + "source_location": "L68", "id": "controller_authentication_controller_register", "community": 58, "norm_label": "register()" @@ -4375,7 +4402,7 @@ "label": "login()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L103", + "source_location": "L100", "id": "controller_authentication_controller_login", "community": 58, "norm_label": "login()" @@ -4384,7 +4411,7 @@ "label": "logout()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L121", + "source_location": "L118", "id": "controller_authentication_controller_logout", "community": 58, "norm_label": "logout()" @@ -4393,7 +4420,7 @@ "label": "introspect()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L157", + "source_location": "L154", "id": "controller_authentication_controller_introspect", "community": 524, "norm_label": "introspect()" @@ -4402,7 +4429,7 @@ "label": "googleLogin()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L182", + "source_location": "L180", "id": "controller_authentication_controller_googlelogin", "community": 58, "norm_label": "googlelogin()" @@ -4411,7 +4438,7 @@ "label": "googleCallback()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L198", + "source_location": "L196", "id": "controller_authentication_controller_googlecallback", "community": 58, "norm_label": "googlecallback()" @@ -4422,7 +4449,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L1", "id": "main_controller_orunmila_controller_py", - "community": 497, + "community": 68, "norm_label": "orunmila_controller.py" }, { @@ -4431,7 +4458,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L26", "id": "controller_orunmila_controller_verifysessionownsership", - "community": 497, + "community": 68, "norm_label": "verifysessionownsership()" }, { @@ -4440,7 +4467,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L32", "id": "controller_orunmila_controller_health", - "community": 497, + "community": 68, "norm_label": "health()" }, { @@ -4449,7 +4476,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L37", "id": "controller_orunmila_controller_getsessions", - "community": 497, + "community": 68, "norm_label": "getsessions()" }, { @@ -4458,7 +4485,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L56", "id": "controller_orunmila_controller_updatesessiontitle", - "community": 497, + "community": 68, "norm_label": "updatesessiontitle()" }, { @@ -4467,7 +4494,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L71", "id": "controller_orunmila_controller_gethistory", - "community": 497, + "community": 68, "norm_label": "gethistory()" }, { @@ -4476,7 +4503,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L90", "id": "controller_orunmila_controller_deletesession", - "community": 497, + "community": 68, "norm_label": "deletesession()" }, { @@ -4485,7 +4512,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L103", "id": "controller_orunmila_controller_chat_stream", - "community": 497, + "community": 68, "norm_label": "chat_stream()" }, { @@ -4494,7 +4521,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L154", "id": "controller_orunmila_controller_resumechatstream", - "community": 497, + "community": 68, "norm_label": "resumechatstream()" }, { @@ -4503,7 +4530,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L166", "id": "controller_orunmila_controller_deleteworkspacefile", - "community": 497, + "community": 68, "norm_label": "deleteworkspacefile()" }, { @@ -4512,7 +4539,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L179", "id": "controller_orunmila_controller_downloadworkspacefile", - "community": 497, + "community": 68, "norm_label": "downloadworkspacefile()" }, { @@ -4521,7 +4548,7 @@ "source_file": "main/controller/orunmila_controller.py", "source_location": "L195", "id": "controller_orunmila_controller_listworkspacefiles", - "community": 497, + "community": 68, "norm_label": "listworkspacefiles()" }, { @@ -4530,32 +4557,32 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L1", "id": "main_controller_stocksapi_controller_py", - "community": 169, + "community": 157, "norm_label": "stocksapi_controller.py" }, { "label": "health()", "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L23", + "source_location": "L28", "id": "controller_stocksapi_controller_health", - "community": 169, + "community": 157, "norm_label": "health()" }, { "label": "listFields()", "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L38", + "source_location": "L44", "id": "controller_stocksapi_controller_listfields", - "community": 54, + "community": 222, "norm_label": "listfields()" }, { "label": "getHistorical()", "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L85", + "source_location": "L92", "id": "controller_stocksapi_controller_gethistorical", "community": 197, "norm_label": "gethistorical()" @@ -4564,7 +4591,7 @@ "label": "getFundamental()", "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L150", + "source_location": "L157", "id": "controller_stocksapi_controller_getfundamental", "community": 157, "norm_label": "getfundamental()" @@ -4573,7 +4600,7 @@ "label": "getCotations()", "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L220", + "source_location": "L227", "id": "controller_stocksapi_controller_getcotations", "community": 169, "norm_label": "getcotations()" @@ -4582,7 +4609,7 @@ "label": "getLiveCotation()", "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L276", + "source_location": "L283", "id": "controller_stocksapi_controller_getlivecotation", "community": 81, "norm_label": "getlivecotation()" @@ -4591,17 +4618,17 @@ "label": "Discover available field names before querying /historical or /fundamental.", "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L39", - "id": "controller_stocksapi_controller_rationale_39", - "community": 54, + "source_location": "L45", + "id": "controller_stocksapi_controller_rationale_45", + "community": 222, "norm_label": "discover available field names before querying /historical or /fundamental." }, { "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L95", - "id": "controller_stocksapi_controller_rationale_95", + "source_location": "L102", + "id": "controller_stocksapi_controller_rationale_102", "community": 197, "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns" }, @@ -4609,8 +4636,8 @@ "label": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L160", - "id": "controller_stocksapi_controller_rationale_160", + "source_location": "L167", + "id": "controller_stocksapi_controller_rationale_167", "community": 157, "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret" }, @@ -4618,8 +4645,8 @@ "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L228", - "id": "controller_stocksapi_controller_rationale_228", + "source_location": "L235", + "id": "controller_stocksapi_controller_rationale_235", "community": 169, "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur" }, @@ -4627,8 +4654,8 @@ "label": "Get real-time price quotation for a single Brazilian B3 stock. Returns th", "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L282", - "id": "controller_stocksapi_controller_rationale_282", + "source_location": "L289", + "id": "controller_stocksapi_controller_rationale_289", "community": 81, "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th" }, @@ -4737,7 +4764,7 @@ "source_file": "main/models/memory.py", "source_location": "L8", "id": "models_memory_orunmilamemory", - "community": 140, + "community": 45, "norm_label": "orunmilamemory" }, { @@ -4755,7 +4782,7 @@ "source_file": "main/models/orunmila.py", "source_location": "L1", "id": "main_models_orunmila_py", - "community": 136, + "community": 231, "norm_label": "orunmila.py" }, { @@ -4764,7 +4791,7 @@ "source_file": "main/models/orunmila.py", "source_location": "L7", "id": "models_orunmila_orunmilasession", - "community": 136, + "community": 231, "norm_label": "orunmilasession" }, { @@ -4782,7 +4809,7 @@ "source_file": "main/models/sandbox.py", "source_location": "L5", "id": "models_sandbox_orunmilasandbox", - "community": 234, + "community": 140, "norm_label": "orunmilasandbox" }, { @@ -4906,16 +4933,16 @@ "label": "AuthenticationService", "file_type": "code", "source_file": "main/service/authentication_service.py", - "source_location": "L9", + "source_location": "L5", "id": "service_authentication_service_authenticationservice", - "community": 536, + "community": 45, "norm_label": "authenticationservice" }, { "label": "initialize()", "file_type": "code", "source_file": "main/service/authentication_service.py", - "source_location": "L11", + "source_location": "L7", "id": "service_authentication_service_initialize", "community": 536, "norm_label": "initialize()" @@ -4926,7 +4953,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L1", "id": "main_service_orunmila_service_py", - "community": 130, + "community": 536, "norm_label": "orunmila_service.py" }, { @@ -4935,7 +4962,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L23", "id": "service_orunmila_service_memorymaintenance", - "community": 137, + "community": 536, "norm_label": "memorymaintenance()" }, { @@ -4944,7 +4971,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L65", "id": "service_orunmila_service_orunmilaservice", - "community": 130, + "community": 536, "norm_label": "orunmilaservice" }, { @@ -4953,7 +4980,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L67", "id": "service_orunmila_service_initialize", - "community": 130, + "community": 536, "norm_label": "initialize()" }, { @@ -4962,7 +4989,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L1", "id": "main_service_scraper_service_py", - "community": 562, + "community": 590, "norm_label": "scraper_service.py" }, { @@ -4971,7 +4998,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L13", "id": "service_scraper_service_runscraper", - "community": 562, + "community": 590, "norm_label": "runscraper()" }, { @@ -4980,7 +5007,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L23", "id": "service_scraper_service_registerscraperjobs", - "community": 562, + "community": 590, "norm_label": "registerscraperjobs()" }, { @@ -4989,7 +5016,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L49", "id": "service_scraper_service_scraperservice", - "community": 562, + "community": 590, "norm_label": "scraperservice" }, { @@ -4998,7 +5025,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L51", "id": "service_scraper_service_initialize", - "community": 562, + "community": 590, "norm_label": "initialize()" }, { @@ -5007,7 +5034,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L1", "id": "main_service_stocksapi_service_py", - "community": 536, + "community": 569, "norm_label": "stocksapi_service.py" }, { @@ -5016,7 +5043,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L10", "id": "service_stocksapi_service_mcpdetectmiddleware", - "community": 536, + "community": 569, "norm_label": "mcpdetectmiddleware" }, { @@ -5025,7 +5052,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L11", "id": "service_stocksapi_service_mcpdetectmiddleware_init", - "community": 536, + "community": 569, "norm_label": ".__init__()" }, { @@ -5034,7 +5061,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L14", "id": "service_stocksapi_service_mcpdetectmiddleware_call", - "community": 536, + "community": 569, "norm_label": ".__call__()" }, { @@ -5043,7 +5070,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L25", "id": "service_stocksapi_service_stocksapiservice", - "community": 536, + "community": 569, "norm_label": "stocksapiservice" }, { @@ -5052,7 +5079,7 @@ "source_file": "main/service/stocksapi_service.py", "source_location": "L27", "id": "service_stocksapi_service_initialize", - "community": 536, + "community": 569, "norm_label": "initialize()" }, { @@ -5097,7 +5124,7 @@ "source_file": "main/utils/connectivity.py", "source_location": "L1", "id": "main_utils_connectivity_py", - "community": 541, + "community": 59, "norm_label": "connectivity.py" }, { @@ -5106,7 +5133,7 @@ "source_file": "main/utils/connectivity.py", "source_location": "L11", "id": "utils_connectivity_checkdatabaseconnection", - "community": 541, + "community": 59, "norm_label": "checkdatabaseconnection()" }, { @@ -5124,7 +5151,7 @@ "source_file": "main/utils/errors.py", "source_location": "L1", "id": "main_utils_errors_py", - "community": 530, + "community": 33, "norm_label": "errors.py" }, { @@ -5160,7 +5187,7 @@ "source_file": "main/utils/errors.py", "source_location": "L26", "id": "utils_errors_builderrorresponse", - "community": 530, + "community": 33, "norm_label": "builderrorresponse()" }, { @@ -5169,7 +5196,7 @@ "source_file": "main/utils/errors.py", "source_location": "L36", "id": "utils_errors_httpexceptionhandler", - "community": 530, + "community": 33, "norm_label": "httpexceptionhandler()" }, { @@ -5178,7 +5205,7 @@ "source_file": "main/utils/errors.py", "source_location": "L43", "id": "utils_errors_validationexceptionhandler", - "community": 530, + "community": 33, "norm_label": "validationexceptionhandler()" }, { @@ -5187,7 +5214,7 @@ "source_file": "main/utils/errors.py", "source_location": "L55", "id": "utils_errors_genericexceptionhandler", - "community": 530, + "community": 33, "norm_label": "genericexceptionhandler()" }, { @@ -5205,7 +5232,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L1", "id": "main_utils_http_session_py", - "community": 580, + "community": 122, "norm_label": "http_session.py" }, { @@ -5214,7 +5241,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L8", "id": "utils_http_session_getsession", - "community": 580, + "community": 122, "norm_label": "getsession()" }, { @@ -5277,7 +5304,7 @@ "source_file": "main/utils/migrator.py", "source_location": "L1", "id": "main_utils_migrator_py", - "community": 541, + "community": 59, "norm_label": "migrator.py" }, { @@ -5286,7 +5313,7 @@ "source_file": "main/utils/migrator.py", "source_location": "L8", "id": "utils_migrator_runmigrations", - "community": 541, + "community": 59, "norm_label": "runmigrations()" }, { @@ -5331,7 +5358,7 @@ "source_file": "main/utils/roles.py", "source_location": "L1", "id": "main_utils_roles_py", - "community": 491, + "community": 523, "norm_label": "roles.py" }, { @@ -5376,7 +5403,7 @@ "source_file": "main/utils/roles.py", "source_location": "L29", "id": "utils_roles_checkaccess", - "community": 491, + "community": 523, "norm_label": "checkaccess()" }, { @@ -5385,7 +5412,7 @@ "source_file": "main/utils/roles.py", "source_location": "L42", "id": "utils_roles_requirepermission", - "community": 491, + "community": 523, "norm_label": "requirepermission()" }, { @@ -5448,7 +5475,7 @@ "source_file": "main/utils/models/loader.py", "source_location": "L1", "id": "main_utils_models_loader_py", - "community": 130, + "community": 605, "norm_label": "loader.py" }, { @@ -5457,7 +5484,7 @@ "source_file": "main/utils/models/loader.py", "source_location": "L12", "id": "models_loader_getembeddingmodel", - "community": 130, + "community": 605, "norm_label": "getembeddingmodel()" }, { @@ -6112,7 +6139,7 @@ "label": "Health Check", "file_type": "document", "source_file": "README.md", - "source_location": "L92", + "source_location": "L91", "id": "server_readme_health_check", "community": 163, "norm_label": "health check" @@ -6121,7 +6148,7 @@ "label": "code:bash (curl http://localhost:3200/health)", "file_type": "document", "source_file": "README.md", - "source_location": "L94", + "source_location": "L93", "id": "server_readme_codeblock_3", "community": 163, "norm_label": "code:bash (curl http://localhost:3200/health)" @@ -6130,7 +6157,7 @@ "label": "License", "file_type": "document", "source_file": "README.md", - "source_location": "L98", + "source_location": "L97", "id": "server_readme_license", "community": 163, "norm_label": "license" @@ -6144,11 +6171,20 @@ "community": 187, "norm_label": "todo.md" }, + { + "label": "Priorities (active order, 2026-09-29)", + "file_type": "document", + "source_file": "TODO.md", + "source_location": "L1", + "id": "server_todo_priorities_active_order_2026_09_29", + "community": 187, + "norm_label": "priorities (active order, 2026-09-29)" + }, { "label": "User structure defined by string roles:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L32", + "source_location": "L49", "id": "server_todo_user_structure_defined_by_string_roles", "community": 187, "norm_label": "user structure defined by string roles:" @@ -6157,7 +6193,7 @@ "label": "USER:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L41", + "source_location": "L58", "id": "server_todo_user", "community": 187, "norm_label": "user:" @@ -6166,7 +6202,7 @@ "label": "PREMIUM:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L44", + "source_location": "L61", "id": "server_todo_premium", "community": 187, "norm_label": "premium:" @@ -6175,7 +6211,7 @@ "label": "DEVELOPER:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L47", + "source_location": "L64", "id": "server_todo_developer", "community": 187, "norm_label": "developer:" @@ -6405,168 +6441,6 @@ "community": 41, "norm_label": "license" }, - { - "label": "investidor10-wallet-research.md", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L1", - "id": "docs_investidor10_wallet_research_md", - "community": 582, - "norm_label": "investidor10-wallet-research.md" - }, - { - "label": "Investidor10 Wallet \u2014 Empirical Research for Mansa", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L1", - "id": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "community": 582, - "norm_label": "investidor10 wallet \u2014 empirical research for mansa" - }, - { - "label": "1. Feature inventory + nav structure", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L10", - "id": "docs_investidor10_wallet_research_1_feature_inventory_nav_structure", - "community": 582, - "norm_label": "1. feature inventory + nav structure" - }, - { - "label": "2. User lifecycle end-to-end", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L30", - "id": "docs_investidor10_wallet_research_2_user_lifecycle_end_to_end", - "community": 582, - "norm_label": "2. user lifecycle end-to-end" - }, - { - "label": "3. Wallet API reference", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L40", - "id": "docs_investidor10_wallet_research_3_wallet_api_reference", - "community": 582, - "norm_label": "3. wallet api reference" - }, - { - "label": "4. Data model inference (from payloads, no DB access)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L65", - "id": "docs_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access", - "community": 582, - "norm_label": "4. data model inference (from payloads, no db access)" - }, - { - "label": "5. Product logic", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L74", - "id": "docs_investidor10_wallet_research_5_product_logic", - "community": 582, - "norm_label": "5. product logic" - }, - { - "label": "5b. Gaps / unverified (do not treat as fact)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L82", - "id": "docs_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact", - "community": 582, - "norm_label": "5b. gaps / unverified (do not treat as fact)" - }, - { - "label": "6. Concrete Mansa proposal (build first \u2192 later; minimal sketches)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L86", - "id": "docs_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches", - "community": 582, - "norm_label": "6. concrete mansa proposal (build first \u2192 later; minimal sketches)" - }, - { - "label": "investidor10-wallet-spec.md", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L1", - "id": "docs_investidor10_wallet_spec_md", - "community": 583, - "norm_label": "investidor10-wallet-spec.md" - }, - { - "label": "Mansa Wallet \u2014 Spec-Driven Implementation Spec", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L1", - "id": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "community": 583, - "norm_label": "mansa wallet \u2014 spec-driven implementation spec" - }, - { - "label": "1. Requirements", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L12", - "id": "docs_investidor10_wallet_spec_1_requirements", - "community": 583, - "norm_label": "1. requirements" - }, - { - "label": "1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L14", - "id": "docs_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield", - "community": 583, - "norm_label": "1.1 functional (per surface; tags: exists = build on it, partial = half reusable, missing = greenfield)" - }, - { - "label": "1.2 Non-functional", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L28", - "id": "docs_investidor10_wallet_spec_1_2_non_functional", - "community": 583, - "norm_label": "1.2 non-functional" - }, - { - "label": "2. Domain model", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L38", - "id": "docs_investidor10_wallet_spec_2_domain_model", - "community": 583, - "norm_label": "2. domain model" - }, - { - "label": "3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L49", - "id": "docs_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout", - "community": 583, - "norm_label": "3. api contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `depends(usermanager.getcurrentuser)` + `depends(getsession)` throughout)" - }, - { - "label": "4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L66", - "id": "docs_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase", - "community": 583, - "norm_label": "4. phased build plan (writing-plans: each phase independently reviewable; reviewer pass per phase)" - }, - { - "label": "5. Risks / assumptions (honest flags carried over \u2014 do not treat as fact)", - "file_type": "document", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L72", - "id": "docs_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact", - "community": 583, - "norm_label": "5. risks / assumptions (honest flags carried over \u2014 do not treat as fact)" - }, { "label": "orunmila.md", "file_type": "document", @@ -7152,6 +7026,951 @@ "community": 23, "norm_label": "license" }, + { + "label": "investidor10-wallet-research.md", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L1", + "id": "docs_superpowers_investidor10_wallet_research_md", + "community": 539, + "norm_label": "investidor10-wallet-research.md" + }, + { + "label": "Investidor10 Wallet \u2014 Empirical Research for Mansa", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L1", + "id": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "community": 539, + "norm_label": "investidor10 wallet \u2014 empirical research for mansa" + }, + { + "label": "1. Feature inventory + nav structure", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L10", + "id": "superpowers_investidor10_wallet_research_1_feature_inventory_nav_structure", + "community": 539, + "norm_label": "1. feature inventory + nav structure" + }, + { + "label": "2. User lifecycle end-to-end", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L30", + "id": "superpowers_investidor10_wallet_research_2_user_lifecycle_end_to_end", + "community": 539, + "norm_label": "2. user lifecycle end-to-end" + }, + { + "label": "3. Wallet API reference", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L40", + "id": "superpowers_investidor10_wallet_research_3_wallet_api_reference", + "community": 539, + "norm_label": "3. wallet api reference" + }, + { + "label": "4. Data model inference (from payloads, no DB access)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L65", + "id": "superpowers_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access", + "community": 539, + "norm_label": "4. data model inference (from payloads, no db access)" + }, + { + "label": "5. Product logic", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L74", + "id": "superpowers_investidor10_wallet_research_5_product_logic", + "community": 539, + "norm_label": "5. product logic" + }, + { + "label": "5b. Gaps / unverified (do not treat as fact)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L82", + "id": "superpowers_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact", + "community": 539, + "norm_label": "5b. gaps / unverified (do not treat as fact)" + }, + { + "label": "6. Concrete Mansa proposal (build first \u2192 later; minimal sketches)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L86", + "id": "superpowers_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches", + "community": 539, + "norm_label": "6. concrete mansa proposal (build first \u2192 later; minimal sketches)" + }, + { + "label": "investidor10-wallet-spec.md", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L1", + "id": "docs_superpowers_investidor10_wallet_spec_md", + "community": 130, + "norm_label": "investidor10-wallet-spec.md" + }, + { + "label": "Mansa Wallet \u2014 Spec-Driven Implementation Spec", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L1", + "id": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "community": 130, + "norm_label": "mansa wallet \u2014 spec-driven implementation spec" + }, + { + "label": "1. Requirements", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L12", + "id": "superpowers_investidor10_wallet_spec_1_requirements", + "community": 130, + "norm_label": "1. requirements" + }, + { + "label": "1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L14", + "id": "superpowers_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield", + "community": 130, + "norm_label": "1.1 functional (per surface; tags: exists = build on it, partial = half reusable, missing = greenfield)" + }, + { + "label": "1.2 Non-functional", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L28", + "id": "superpowers_investidor10_wallet_spec_1_2_non_functional", + "community": 130, + "norm_label": "1.2 non-functional" + }, + { + "label": "2. Domain model", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L38", + "id": "superpowers_investidor10_wallet_spec_2_domain_model", + "community": 130, + "norm_label": "2. domain model" + }, + { + "label": "3. API contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L49", + "id": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout", + "community": 130, + "norm_label": "3. api contracts (all under `/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `depends(usermanager.getcurrentuser)` + `depends(getsession)` throughout)" + }, + { + "label": "4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L66", + "id": "superpowers_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase", + "community": 130, + "norm_label": "4. phased build plan (writing-plans: each phase independently reviewable; reviewer pass per phase)" + }, + { + "label": "5. Risks / assumptions (honest flags carried over \u2014 do not treat as fact)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L72", + "id": "superpowers_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact", + "community": 130, + "norm_label": "5. risks / assumptions (honest flags carried over \u2014 do not treat as fact)" + }, + { + "label": "6. Readiness assessment (s3, verified 2026-09-29) \u2014 prerequisites before P1", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L81", + "id": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "community": 130, + "norm_label": "6. readiness assessment (s3, verified 2026-09-29) \u2014 prerequisites before p1" + }, + { + "label": "6.1 DB & migrations (`user_db`) \u2014 CONTESTED (\u00a77.1): 3 actions, incl. one destructive autogenerate risk", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L87", + "id": "superpowers_investidor10_wallet_spec_6_1_db_migrations_user_db_contested_7_1_3_actions_incl_one_destructive_autogenerate_risk", + "community": 130, + "norm_label": "6.1 db & migrations (`user_db`) \u2014 contested (\u00a77.1): 3 actions, incl. one destructive autogenerate risk" + }, + { + "label": "6.2 Stocks/price access \u2014 CONFIRMED + extended (\u00a77.2)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L94", + "id": "superpowers_investidor10_wallet_spec_6_2_stocks_price_access_confirmed_extended_7_2", + "community": 130, + "norm_label": "6.2 stocks/price access \u2014 confirmed + extended (\u00a77.2)" + }, + { + "label": "6.3 Wiring / auth / tests \u2014 CONTESTED (\u00a77.3): mounting TRUE; gating + test seams missing", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L100", + "id": "superpowers_investidor10_wallet_spec_6_3_wiring_auth_tests_contested_7_3_mounting_true_gating_test_seams_missing", + "community": 130, + "norm_label": "6.3 wiring / auth / tests \u2014 contested (\u00a77.3): mounting true; gating + test seams missing" + }, + { + "label": "6.4 Scraper pipeline (P2 dividends / has_b3) \u2014 CONTESTED (\u00a77.4): data present; source/staleness gaps", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L106", + "id": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_contested_7_4_data_present_source_staleness_gaps", + "community": 130, + "norm_label": "6.4 scraper pipeline (p2 dividends / has_b3) \u2014 contested (\u00a77.4): data present; source/staleness gaps" + }, + { + "label": "6.5 Ordered actions before P1 code", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L112", + "id": "superpowers_investidor10_wallet_spec_6_5_ordered_actions_before_p1_code", + "community": 130, + "norm_label": "6.5 ordered actions before p1 code" + }, + { + "label": "7. Independent re-verification (swarm s4, 2026-09-29) \u2014 corrections to \u00a76", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L121", + "id": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", + "community": 130, + "norm_label": "7. independent re-verification (swarm s4, 2026-09-29) \u2014 corrections to \u00a76" + }, + { + "label": "7.1 DB & migrations \u2014 \u00a76.1 CONTESTED: 3 actions, one destructive risk", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L125", + "id": "superpowers_investidor10_wallet_spec_7_1_db_migrations_6_1_contested_3_actions_one_destructive_risk", + "community": 130, + "norm_label": "7.1 db & migrations \u2014 \u00a76.1 contested: 3 actions, one destructive risk" + }, + { + "label": "7.2 Stocks/price access \u2014 \u00a76.2 CONFIRMED, incomplete", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L133", + "id": "superpowers_investidor10_wallet_spec_7_2_stocks_price_access_6_2_confirmed_incomplete", + "community": 130, + "norm_label": "7.2 stocks/price access \u2014 \u00a76.2 confirmed, incomplete" + }, + { + "label": "7.3 Wiring / auth / tests \u2014 \u00a76.3 CONTESTED (mounting TRUE)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L143", + "id": "superpowers_investidor10_wallet_spec_7_3_wiring_auth_tests_6_3_contested_mounting_true", + "community": 130, + "norm_label": "7.3 wiring / auth / tests \u2014 \u00a76.3 contested (mounting true)" + }, + { + "label": "7.4 Scraper pipeline \u2014 \u00a76.4 CONTESTED", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L150", + "id": "superpowers_investidor10_wallet_spec_7_4_scraper_pipeline_6_4_contested", + "community": 130, + "norm_label": "7.4 scraper pipeline \u2014 \u00a76.4 contested" + }, + { + "label": "7.5 Revised pre-P1 actions (supersedes \u00a76.5)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L159", + "id": "superpowers_investidor10_wallet_spec_7_5_revised_pre_p1_actions_supersedes_6_5", + "community": 130, + "norm_label": "7.5 revised pre-p1 actions (supersedes \u00a76.5)" + }, + { + "label": "nginx-scaling-plan.md", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L1", + "id": "docs_superpowers_nginx_scaling_plan_md", + "community": 579, + "norm_label": "nginx-scaling-plan.md" + }, + { + "label": "nginx Scaling Plan \u2014 reverse proxy + response cache for `/stocks`, and the multi-server evolution", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L1", + "id": "superpowers_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution", + "community": 579, + "norm_label": "nginx scaling plan \u2014 reverse proxy + response cache for `/stocks`, and the multi-server evolution" + }, + { + "label": "0. Purpose and constraints", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L17", + "id": "superpowers_nginx_scaling_plan_0_purpose_and_constraints", + "community": 579, + "norm_label": "0. purpose and constraints" + }, + { + "label": "0.1 Rev 2 \u2014 do FIRST: app cache TTL increase + `/fields` cache (no nginx, no Redis)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L35", + "id": "superpowers_nginx_scaling_plan_0_1_rev_2_do_first_app_cache_ttl_increase_fields_cache_no_nginx_no_redis", + "community": 579, + "norm_label": "0.1 rev 2 \u2014 do first: app cache ttl increase + `/fields` cache (no nginx, no redis)" + }, + { + "label": "Part 1 \u2014 Implementation plan", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L64", + "id": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "community": 215, + "norm_label": "part 1 \u2014 implementation plan" + }, + { + "label": "1.1 Architecture decision", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L66", + "id": "superpowers_nginx_scaling_plan_1_1_architecture_decision", + "community": 215, + "norm_label": "1.1 architecture decision" + }, + { + "label": "1.2 File layout", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L79", + "id": "superpowers_nginx_scaling_plan_1_2_file_layout", + "community": 215, + "norm_label": "1.2 file layout" + }, + { + "label": "code:block1 (nginx/)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L82", + "id": "superpowers_nginx_scaling_plan_codeblock_1", + "community": 215, + "norm_label": "code:block1 (nginx/)" + }, + { + "label": "1.3 Phase P0 \u2014 nginx service + config skeleton", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L96", + "id": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", + "community": 597, + "norm_label": "1.3 phase p0 \u2014 nginx service + config skeleton" + }, + { + "label": "code:yaml (nginx:)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L98", + "id": "superpowers_nginx_scaling_plan_codeblock_2", + "community": 597, + "norm_label": "code:yaml (nginx:)" + }, + { + "label": "code:nginx (proxy_cache_path /var/cache/nginx/stocks)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L118", + "id": "superpowers_nginx_scaling_plan_codeblock_3", + "community": 597, + "norm_label": "code:nginx (proxy_cache_path /var/cache/nginx/stocks)" + }, + { + "label": "code:nginx (upstream stocks_api {)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L139", + "id": "superpowers_nginx_scaling_plan_codeblock_4", + "community": 597, + "norm_label": "code:nginx (upstream stocks_api {)" + }, + { + "label": "1.4 Phase P1 \u2014 cache locations, TTL table, directives", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L152", + "id": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", + "community": 598, + "norm_label": "1.4 phase p1 \u2014 cache locations, ttl table, directives" + }, + { + "label": "code:nginx (proxy_pass http://stocks_api;)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L155", + "id": "superpowers_nginx_scaling_plan_codeblock_5", + "community": 598, + "norm_label": "code:nginx (proxy_pass http://stocks_api;)" + }, + { + "label": "code:nginx (server {)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L186", + "id": "superpowers_nginx_scaling_plan_codeblock_6", + "community": 598, + "norm_label": "code:nginx (server {)" + }, + { + "label": "code:bash (K=sk_test_...; U='http://localhost/stocks/historical?search=)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L242", + "id": "superpowers_nginx_scaling_plan_codeblock_7", + "community": 598, + "norm_label": "code:bash (k=sk_test_...; u='http://localhost/stocks/historical?search=)" + }, + { + "label": "1.5 Phase P2 \u2014 port scheme, worker containers, keepalive", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L251", + "id": "superpowers_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive", + "community": 215, + "norm_label": "1.5 phase p2 \u2014 port scheme, worker containers, keepalive" + }, + { + "label": "code:yaml (stocksapi:)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L257", + "id": "superpowers_nginx_scaling_plan_codeblock_8", + "community": 215, + "norm_label": "code:yaml (stocksapi:)" + }, + { + "label": "1.6 Phase P3 \u2014 remote VPS upstreams + health strategy", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L277", + "id": "superpowers_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy", + "community": 215, + "norm_label": "1.6 phase p3 \u2014 remote vps upstreams + health strategy" + }, + { + "label": "code:nginx (upstream stocks_api {)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L279", + "id": "superpowers_nginx_scaling_plan_codeblock_9", + "community": 215, + "norm_label": "code:nginx (upstream stocks_api {)" + }, + { + "label": "code:nginx (proxy_next_upstream error timeout http_502 http_503 http_504)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L291", + "id": "superpowers_nginx_scaling_plan_codeblock_10", + "community": 215, + "norm_label": "code:nginx (proxy_next_upstream error timeout http_502 http_503 http_504)" + }, + { + "label": "1.7 Phase P4 \u2014 handoff design (no code in this plan)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L309", + "id": "superpowers_nginx_scaling_plan_1_7_phase_p4_handoff_design_no_code_in_this_plan", + "community": 215, + "norm_label": "1.7 phase p4 \u2014 handoff design (no code in this plan)" + }, + { + "label": "1.8 Quota / rate-limit semantics after caching", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L320", + "id": "superpowers_nginx_scaling_plan_1_8_quota_rate_limit_semantics_after_caching", + "community": 215, + "norm_label": "1.8 quota / rate-limit semantics after caching" + }, + { + "label": "1.9 Anti-scraping note (TODO 17)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L332", + "id": "superpowers_nginx_scaling_plan_1_9_anti_scraping_note_todo_17", + "community": 215, + "norm_label": "1.9 anti-scraping note (todo 17)" + }, + { + "label": "1.10 Edge cases / risks (implementation)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L336", + "id": "superpowers_nginx_scaling_plan_1_10_edge_cases_risks_implementation", + "community": 215, + "norm_label": "1.10 edge cases / risks (implementation)" + }, + { + "label": "Part 2 \u2014 Benchmark plan", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L347", + "id": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "community": 522, + "norm_label": "part 2 \u2014 benchmark plan" + }, + { + "label": "2.0 Grounding: what the code actually does", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L349", + "id": "superpowers_nginx_scaling_plan_2_0_grounding_what_the_code_actually_does", + "community": 522, + "norm_label": "2.0 grounding: what the code actually does" + }, + { + "label": "2.1 Hypotheses", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L381", + "id": "superpowers_nginx_scaling_plan_2_1_hypotheses", + "community": 522, + "norm_label": "2.1 hypotheses" + }, + { + "label": "2.2 Tooling", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L390", + "id": "superpowers_nginx_scaling_plan_2_2_tooling", + "community": 580, + "norm_label": "2.2 tooling" + }, + { + "label": "code:bash (# Windows/Docker Desktop: do NOT use --network host (the Lin)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L393", + "id": "superpowers_nginx_scaling_plan_codeblock_11", + "community": 580, + "norm_label": "code:bash (# windows/docker desktop: do not use --network host (the lin)" + }, + { + "label": "code:bash (curl -s -o /dev/null -w '%header{x-cache-status}\\n' -H \"X-AP)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L406", + "id": "superpowers_nginx_scaling_plan_codeblock_12", + "community": 580, + "norm_label": "code:bash (curl -s -o /dev/null -w '%header{x-cache-status}\\n' -h \"x-ap)" + }, + { + "label": "code:bash (docker stats --no-stream --format \"{{.Name}},{{.CPUPerc}},{{)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L414", + "id": "superpowers_nginx_scaling_plan_codeblock_13", + "community": 580, + "norm_label": "code:bash (docker stats --no-stream --format \"{{.name}},{{.cpuperc}},{{)" + }, + { + "label": "code:bash (docker exec api sh -c \"pidstat -w -p 1 1 30\" # if sysst)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L420", + "id": "superpowers_nginx_scaling_plan_codeblock_14", + "community": 580, + "norm_label": "code:bash (docker exec api sh -c \"pidstat -w -p 1 1 30\" # if sysst)" + }, + { + "label": "code:block15 (tests/perf/nginx/)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L431", + "id": "superpowers_nginx_scaling_plan_codeblock_15", + "community": 580, + "norm_label": "code:block15 (tests/perf/nginx/)" + }, + { + "label": "2.3 Scenarios", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L440", + "id": "superpowers_nginx_scaling_plan_2_3_scenarios", + "community": 522, + "norm_label": "2.3 scenarios" + }, + { + "label": "2.4 Protocol", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L452", + "id": "superpowers_nginx_scaling_plan_2_4_protocol", + "community": 522, + "norm_label": "2.4 protocol" + }, + { + "label": "2.5 Metrics", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L463", + "id": "superpowers_nginx_scaling_plan_2_5_metrics", + "community": 522, + "norm_label": "2.5 metrics" + }, + { + "label": "2.6 Acceptance thresholds \u2014 **ALL PROPOSED, freeze after first real run**", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L467", + "id": "superpowers_nginx_scaling_plan_2_6_acceptance_thresholds_all_proposed_freeze_after_first_real_run", + "community": 522, + "norm_label": "2.6 acceptance thresholds \u2014 **all proposed, freeze after first real run**" + }, + { + "label": "2.7 Results doc layout", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L484", + "id": "superpowers_nginx_scaling_plan_2_7_results_doc_layout", + "community": 522, + "norm_label": "2.7 results doc layout" + }, + { + "label": "code:block16 (docs/benchmarks/nginx/)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L486", + "id": "superpowers_nginx_scaling_plan_codeblock_16", + "community": 522, + "norm_label": "code:block16 (docs/benchmarks/nginx/)" + }, + { + "label": "2.8 Feeding `/status` (TODO 14)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L493", + "id": "superpowers_nginx_scaling_plan_2_8_feeding_status_todo_14", + "community": 522, + "norm_label": "2.8 feeding `/status` (todo 14)" + }, + { + "label": "2.9 Benchmark risks", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L499", + "id": "superpowers_nginx_scaling_plan_2_9_benchmark_risks", + "community": 522, + "norm_label": "2.9 benchmark risks" + }, + { + "label": "Part 3 \u2014 Future scaling evolution + risks", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L510", + "id": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "community": 178, + "norm_label": "part 3 \u2014 future scaling evolution + risks" + }, + { + "label": "3.0 Verified ground truth", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L512", + "id": "superpowers_nginx_scaling_plan_3_0_verified_ground_truth", + "community": 178, + "norm_label": "3.0 verified ground truth" + }, + { + "label": "3.1 Target topology", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L529", + "id": "superpowers_nginx_scaling_plan_3_1_target_topology", + "community": 178, + "norm_label": "3.1 target topology" + }, + { + "label": "code:block17 (NODE A NODE B)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L534", + "id": "superpowers_nginx_scaling_plan_codeblock_17", + "community": 178, + "norm_label": "code:block17 (node a node b)" + }, + { + "label": "3.2 Worker-container extraction", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L546", + "id": "superpowers_nginx_scaling_plan_3_2_worker_container_extraction", + "community": 178, + "norm_label": "3.2 worker-container extraction" + }, + { + "label": "3.3 nginx upstream evolution \u2014 validated against the user's plan", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L563", + "id": "superpowers_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan", + "community": 178, + "norm_label": "3.3 nginx upstream evolution \u2014 validated against the user's plan" + }, + { + "label": "code:nginx (upstream stocks_api { server 10.0.0.12:3200 max_fails=3 fail)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L567", + "id": "superpowers_nginx_scaling_plan_codeblock_18", + "community": 178, + "norm_label": "code:nginx (upstream stocks_api { server 10.0.0.12:3200 max_fails=3 fail)" + }, + { + "label": "3.4 TODO 13 migration \u2014 drop `{service}_HOST`/`{service}_PORT`", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L584", + "id": "superpowers_nginx_scaling_plan_3_4_todo_13_migration_drop_service_host_service_port", + "community": 178, + "norm_label": "3.4 todo 13 migration \u2014 drop `{service}_host`/`{service}_port`" + }, + { + "label": "3.5 Redis \u2014 exactly two jobs", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L591", + "id": "superpowers_nginx_scaling_plan_3_5_redis_exactly_two_jobs", + "community": 178, + "norm_label": "3.5 redis \u2014 exactly two jobs" + }, + { + "label": "3.6 Cache strategy across boxes", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L607", + "id": "superpowers_nginx_scaling_plan_3_6_cache_strategy_across_boxes", + "community": 178, + "norm_label": "3.6 cache strategy across boxes" + }, + { + "label": "3.7 Autoscaling story (TODO 11)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L613", + "id": "superpowers_nginx_scaling_plan_3_7_autoscaling_story_todo_11", + "community": 178, + "norm_label": "3.7 autoscaling story (todo 11)" + }, + { + "label": "3.8 ForgeVM interplay (TODO 12)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L618", + "id": "superpowers_nginx_scaling_plan_3_8_forgevm_interplay_todo_12", + "community": 178, + "norm_label": "3.8 forgevm interplay (todo 12)" + }, + { + "label": "3.9 Risk register", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L622", + "id": "superpowers_nginx_scaling_plan_3_9_risk_register", + "community": 178, + "norm_label": "3.9 risk register" + }, + { + "label": "3.10 Migration sequence + verification", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L642", + "id": "superpowers_nginx_scaling_plan_3_10_migration_sequence_verification", + "community": 178, + "norm_label": "3.10 migration sequence + verification" + }, + { + "label": "Open decisions (blocking or product-owned)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L661", + "id": "superpowers_nginx_scaling_plan_open_decisions_blocking_or_product_owned", + "community": 579, + "norm_label": "open decisions (blocking or product-owned)" + }, + { + "label": "Next actions (not in scope here)", + "file_type": "document", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L669", + "id": "superpowers_nginx_scaling_plan_next_actions_not_in_scope_here", + "community": 579, + "norm_label": "next actions (not in scope here)" + }, + { + "label": "uvicorn-worker-scaling-plan.md", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "id": "docs_superpowers_uvicorn_worker_scaling_plan_md", + "community": 495, + "norm_label": "uvicorn-worker-scaling-plan.md" + }, + { + "label": "Uvicorn Worker Migration \u00e2\u20ac\u201d What Must Change", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "id": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "community": 495, + "norm_label": "uvicorn worker migration a\u20ac\u201d what must change" + }, + { + "label": "0. The blockers, ranked", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L17", + "id": "superpowers_uvicorn_worker_scaling_plan_0_the_blockers_ranked", + "community": 495, + "norm_label": "0. the blockers, ranked" + }, + { + "label": "1. Verified state (compact)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L32", + "id": "superpowers_uvicorn_worker_scaling_plan_1_verified_state_compact", + "community": 495, + "norm_label": "1. verified state (compact)" + }, + { + "label": "2. Change inventory (the spine)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L52", + "id": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "community": 495, + "norm_label": "2. change inventory (the spine)" + }, + { + "label": "B1 \u00e2\u20ac\u201d Startup and process model `must-fix`", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L54", + "id": "superpowers_uvicorn_worker_scaling_plan_b1_\u00e2_startup_and_process_model_must_fix", + "community": 495, + "norm_label": "b1 a\u20ac\u201d startup and process model `must-fix`" + }, + { + "label": "B2 \u00e2\u20ac\u201d Cache under N>1 `must-fix`", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L67", + "id": "superpowers_uvicorn_worker_scaling_plan_b2_\u00e2_cache_under_n_1_must_fix", + "community": 495, + "norm_label": "b2 a\u20ac\u201d cache under n>1 `must-fix`" + }, + { + "label": "B3 \u00e2\u20ac\u201d DB pools `must-fix at N\u00e2\u2030\u00a53 on one server`", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L79", + "id": "superpowers_uvicorn_worker_scaling_plan_b3_\u00e2_db_pools_must_fix_at_n\u00e2_3_on_one_server", + "community": 495, + "norm_label": "b3 a\u20ac\u201d db pools `must-fix at na\u2030\u00a53 on one server`" + }, + { + "label": "B4 \u00e2\u20ac\u201d Migrations `must-fix`", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L98", + "id": "superpowers_uvicorn_worker_scaling_plan_b4_\u00e2_migrations_must_fix", + "community": 495, + "norm_label": "b4 a\u20ac\u201d migrations `must-fix`" + }, + { + "label": "B5 \u00e2\u20ac\u201d Per-process state (ranked; scope by service)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L107", + "id": "superpowers_uvicorn_worker_scaling_plan_b5_\u00e2_per_process_state_ranked_scope_by_service", + "community": 495, + "norm_label": "b5 a\u20ac\u201d per-process state (ranked; scope by service)" + }, + { + "label": "B6 \u00e2\u20ac\u201d Deployment glue `must-build`", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L123", + "id": "superpowers_uvicorn_worker_scaling_plan_b6_\u00e2_deployment_glue_must_build", + "community": 495, + "norm_label": "b6 a\u20ac\u201d deployment glue `must-build`" + }, + { + "label": "3. Rulings (conflicts I adjudicated)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L135", + "id": "superpowers_uvicorn_worker_scaling_plan_3_rulings_conflicts_i_adjudicated", + "community": 495, + "norm_label": "3. rulings (conflicts i adjudicated)" + }, + { + "label": "4. Design-spec alignment (`2026-09-29-nginx-scaling-design.md`)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L147", + "id": "superpowers_uvicorn_worker_scaling_plan_4_design_spec_alignment_2026_09_29_nginx_scaling_design_md", + "community": 495, + "norm_label": "4. design-spec alignment (`2026-09-29-nginx-scaling-design.md`)" + }, + { + "label": "5. Sequencing, verification, and bans", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L162", + "id": "superpowers_uvicorn_worker_scaling_plan_5_sequencing_verification_and_bans", + "community": 495, + "norm_label": "5. sequencing, verification, and bans" + }, + { + "label": "6. Options (demoted)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L174", + "id": "superpowers_uvicorn_worker_scaling_plan_6_options_demoted", + "community": 495, + "norm_label": "6. options (demoted)" + }, + { + "label": "7. Risks", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L186", + "id": "superpowers_uvicorn_worker_scaling_plan_7_risks", + "community": 495, + "norm_label": "7. risks" + }, + { + "label": "8. Evidence index", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L200", + "id": "superpowers_uvicorn_worker_scaling_plan_8_evidence_index", + "community": 495, + "norm_label": "8. evidence index" + }, { "label": "2026-08-09-sse-resume.md", "file_type": "document", @@ -8868,7 +9687,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L166", "id": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", - "community": 572, + "community": 576, "norm_label": "task 2: alembic migration for wallet tables" }, { @@ -8877,7 +9696,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L189", "id": "plans_2026_09_04_wallet_management_codeblock_6", - "community": 572, + "community": 576, "norm_label": "code:python (\"\"\"add wallet_holdings and wallet_lots tables)" }, { @@ -8886,7 +9705,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L248", "id": "plans_2026_09_04_wallet_management_codeblock_7", - "community": 572, + "community": 576, "norm_label": "code:python (import main.models.wallet)" }, { @@ -8895,7 +9714,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L262", "id": "plans_2026_09_04_wallet_management_codeblock_8", - "community": 572, + "community": 576, "norm_label": "code:bash (git add migrations/versions/wallet_tables_20260904_add_walle)" }, { @@ -9735,6 +10554,1023 @@ "community": 90, "norm_label": "task 8: pytest plugin set" }, + { + "label": "2026-09-29-nginx-response-cache.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L1", + "id": "docs_superpowers_plans_2026_09_29_nginx_response_cache_md", + "community": 126, + "norm_label": "2026-09-29-nginx-response-cache.md" + }, + { + "label": "nginx Response Cache Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L1", + "id": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan", + "community": 126, + "norm_label": "nginx response cache implementation plan" + }, + { + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L14", + "id": "plans_2026_09_29_nginx_response_cache_global_constraints", + "community": 126, + "norm_label": "global constraints" + }, + { + "label": "Review Focus (spec-implied inputs most likely to bite)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L25", + "id": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "community": 126, + "norm_label": "review focus (spec-implied inputs most likely to bite)" + }, + { + "label": "Task 1: nginx compose service, http-context config, upstream, bypass routing", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L36", + "id": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "community": 126, + "norm_label": "task 1: nginx compose service, http-context config, upstream, bypass routing" + }, + { + "label": "code:powershell (netstat -ano | findstr \":80 \" # must be empty; if not, )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L51", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_1", + "community": 126, + "norm_label": "code:powershell (netstat -ano | findstr \":80 \" # must be empty; if not, )" + }, + { + "label": "code:nginx (# http-context directives only (no server{}).)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L62", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_2", + "community": 126, + "norm_label": "code:nginx (# http-context directives only (no server{}).)" + }, + { + "label": "code:nginx (upstream stocks_api {)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L87", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_3", + "community": 126, + "norm_label": "code:nginx (upstream stocks_api {)" + }, + { + "label": "code:nginx (proxy_pass http://stocks_api;)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L101", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_4", + "community": 126, + "norm_label": "code:nginx (proxy_pass http://stocks_api;)" + }, + { + "label": "code:nginx (server {)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L116", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_5", + "community": 126, + "norm_label": "code:nginx (server {)" + }, + { + "label": "code:yaml (nginx:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L131", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_6", + "community": 126, + "norm_label": "code:yaml (nginx:)" + }, + { + "label": "code:yaml (volumes:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L152", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_7", + "community": 126, + "norm_label": "code:yaml (volumes:)" + }, + { + "label": "code:powershell (docker compose config -q)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L164", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_8", + "community": 126, + "norm_label": "code:powershell (docker compose config -q)" + }, + { + "label": "code:bash (git add docker-compose.yml nginx/conf.d/00-http-common.conf )", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L176", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_9", + "community": 126, + "norm_label": "code:bash (git add docker-compose.yml nginx/conf.d/00-http-common.conf )" + }, + { + "label": "Task 2: Cached locations, shared proxy snippet, mirrored TTLs", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L183", + "id": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", + "community": 126, + "norm_label": "task 2: cached locations, shared proxy snippet, mirrored ttls" + }, + { + "label": "code:powershell ($U = \"http://localhost/stocks/cotations?search=PETR4\")", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L195", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_10", + "community": 126, + "norm_label": "code:powershell ($u = \"http://localhost/stocks/cotations?search=petr4\")" + }, + { + "label": "code:nginx (proxy_pass http://stocks_api;)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L206", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_11", + "community": 126, + "norm_label": "code:nginx (proxy_pass http://stocks_api;)" + }, + { + "label": "code:nginx (# Exact-match on purpose: a prefix match on /stocks/cotation)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L246", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_12", + "community": 126, + "norm_label": "code:nginx (# exact-match on purpose: a prefix match on /stocks/cotation)" + }, + { + "label": "code:powershell (docker exec nginx nginx -t; if ($?) { docker exec nginx ngin)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L282", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_13", + "community": 126, + "norm_label": "code:powershell (docker exec nginx nginx -t; if ($?) { docker exec nginx ngin)" + }, + { + "label": "code:bash (git add nginx/conf.d/20-stocks.conf nginx/snippets/stocks-pr)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L295", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_14", + "community": 126, + "norm_label": "code:bash (git add nginx/conf.d/20-stocks.conf nginx/snippets/stocks-pr)" + }, + { + "label": "Task 3: Measure the GIL relief and record it", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L302", + "id": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", + "community": 126, + "norm_label": "task 3: measure the gil relief and record it" + }, + { + "label": "code:powershell (docker stats --no-stream --format \"{{.Name}},{{.CPUPerc}},{{)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L314", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_15", + "community": 126, + "norm_label": "code:powershell (docker stats --no-stream --format \"{{.name}},{{.cpuperc}},{{)" + }, + { + "label": "code:powershell ($U = \"http://localhost/stocks/cotations?search=PETR4\")", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L321", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_16", + "community": 126, + "norm_label": "code:powershell ($u = \"http://localhost/stocks/cotations?search=petr4\")" + }, + { + "label": "code:powershell ($D = \"http://localhost:3200/stocks/cotations?search=PETR4\")", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L333", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_17", + "community": 126, + "norm_label": "code:powershell ($d = \"http://localhost:3200/stocks/cotations?search=petr4\")" + }, + { + "label": "code:markdown (# nginx response cache \u2014 GIL-relief measurement)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L346", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_18", + "community": 126, + "norm_label": "code:markdown (# nginx response cache \u2014 gil-relief measurement)" + }, + { + "label": "code:bash (.\\ci.ps1)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L367", + "id": "plans_2026_09_29_nginx_response_cache_codeblock_19", + "community": 126, + "norm_label": "code:bash (.\\ci.ps1)" + }, + { + "label": "Execution Handoff", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L375", + "id": "plans_2026_09_29_nginx_response_cache_execution_handoff", + "community": 126, + "norm_label": "execution handoff" + }, + { + "label": "2026-09-29-stocks-cache-ttl.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L1", + "id": "docs_superpowers_plans_2026_09_29_stocks_cache_ttl_md", + "community": 110, + "norm_label": "2026-09-29-stocks-cache-ttl.md" + }, + { + "label": "Stocks API Cache TTL + `/fields` Cache Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L1", + "id": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan", + "community": 110, + "norm_label": "stocks api cache ttl + `/fields` cache implementation plan" + }, + { + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L13", + "id": "plans_2026_09_29_stocks_cache_ttl_global_constraints", + "community": 110, + "norm_label": "global constraints" + }, + { + "label": "Review Focus (spec-implied inputs most likely to bite)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L25", + "id": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", + "community": 110, + "norm_label": "review focus (spec-implied inputs most likely to bite)" + }, + { + "label": "Task 1: TTL constants, 6h on the three data routes, header alignment", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L36", + "id": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", + "community": 110, + "norm_label": "task 1: ttl constants, 6h on the three data routes, header alignment" + }, + { + "label": "code:python (import re)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L50", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_1", + "community": 110, + "norm_label": "code:python (import re)" + }, + { + "label": "code:python (# Endpoint cache TTLs. STOCKS_TTL must stay <= STALE_AFTER_S)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L91", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_2", + "community": 110, + "norm_label": "code:python (# endpoint cache ttls. stocks_ttl must stay <= stale_after_s)" + }, + { + "label": "code:python (@endpointCache(ttl=STOCKS_TTL, key=\"stocks:historical:{searc)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L103", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_3", + "community": 110, + "norm_label": "code:python (@endpointcache(ttl=stocks_ttl, key=\"stocks:historical:{searc)" + }, + { + "label": "code:python (response.headers[\"Cache-Control\"] = f\"public, max-age={STOCK)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L112", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_4", + "community": 110, + "norm_label": "code:python (response.headers[\"cache-control\"] = f\"public, max-age={stock)" + }, + { + "label": "code:bash (git add main/controller/stocksapi_controller.py tests/test_s)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L129", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_5", + "community": 110, + "norm_label": "code:bash (git add main/controller/stocksapi_controller.py tests/test_s)" + }, + { + "label": "Task 2: Cache `/stocks/fields`", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L136", + "id": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", + "community": 110, + "norm_label": "task 2: cache `/stocks/fields`" + }, + { + "label": "code:python (import asyncio)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L152", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_6", + "community": 110, + "norm_label": "code:python (import asyncio)" + }, + { + "label": "code:python (@pytest_asyncio.fixture(scope=\"module\", loop_scope=\"module\",)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L165", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_7", + "community": 110, + "norm_label": "code:python (@pytest_asyncio.fixture(scope=\"module\", loop_scope=\"module\",)" + }, + { + "label": "code:python (@router.get(\"/fields\", operation_id=\"list_fields\"))", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L220", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_8", + "community": 110, + "norm_label": "code:python (@router.get(\"/fields\", operation_id=\"list_fields\"))" + }, + { + "label": "code:python (response.headers[\"Cache-Control\"] = f\"public, max-age={STOCK)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L228", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_9", + "community": 110, + "norm_label": "code:python (response.headers[\"cache-control\"] = f\"public, max-age={stock)" + }, + { + "label": "code:bash (git add main/controller/stocksapi_controller.py tests/test_s)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L247", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_10", + "community": 110, + "norm_label": "code:bash (git add main/controller/stocksapi_controller.py tests/test_s)" + }, + { + "label": "Task 3: Invalidate the endpoint cache on feather reload", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L254", + "id": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", + "community": 110, + "norm_label": "task 3: invalidate the endpoint cache on feather reload" + }, + { + "label": "code:python (def test_feather_reload_drops_cached_bodies(monkeypatch):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L269", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_11", + "community": 110, + "norm_label": "code:python (def test_feather_reload_drops_cached_bodies(monkeypatch):)" + }, + { + "label": "code:python (def clearEndpointCache() -> None:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L301", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_12", + "community": 110, + "norm_label": "code:python (def clearendpointcache() -> none:)" + }, + { + "label": "code:python (from main.app.stocks_api.compress import rebuildAbbrevs)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L311", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_13", + "community": 110, + "norm_label": "code:python (from main.app.stocks_api.compress import rebuildabbrevs)" + }, + { + "label": "code:bash (git add main/app/stocks_api/sync_cache.py main/app/stocks_ap)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L333", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_14", + "community": 110, + "norm_label": "code:bash (git add main/app/stocks_api/sync_cache.py main/app/stocks_ap)" + }, + { + "label": "Task 4: Measure the 6h window (RSS) and record the verdict", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L340", + "id": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", + "community": 110, + "norm_label": "task 4: measure the 6h window (rss) and record the verdict" + }, + { + "label": "code:bash (docker compose up -d --build api)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L352", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_15", + "community": 110, + "norm_label": "code:bash (docker compose up -d --build api)" + }, + { + "label": "code:powershell ($Key = $env:PERF_API_KEY)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L363", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_16", + "community": 110, + "norm_label": "code:powershell ($key = $env:perf_api_key)" + }, + { + "label": "code:bash (docker stats --no-stream --format \"{{.Name}},{{.MemUsage}},{)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L376", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_17", + "community": 110, + "norm_label": "code:bash (docker stats --no-stream --format \"{{.name}},{{.memusage}},{)" + }, + { + "label": "code:markdown (# Stocks endpoint cache TTL \u2014 6h RSS check)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L384", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_18", + "community": 110, + "norm_label": "code:markdown (# stocks endpoint cache ttl \u2014 6h rss check)" + }, + { + "label": "code:bash (.\\ci.ps1)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L402", + "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_19", + "community": 110, + "norm_label": "code:bash (.\\ci.ps1)" + }, + { + "label": "Execution Handoff", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L410", + "id": "plans_2026_09_29_stocks_cache_ttl_execution_handoff", + "community": 110, + "norm_label": "execution handoff" + }, + { + "label": "2026-09-29-uvicorn-worker-scaling.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L1", + "id": "docs_superpowers_plans_2026_09_29_uvicorn_worker_scaling_md", + "community": 13, + "norm_label": "2026-09-29-uvicorn-worker-scaling.md" + }, + { + "label": "Uvicorn / FastAPI Worker Scaling Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L1", + "id": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan", + "community": 13, + "norm_label": "uvicorn / fastapi worker scaling implementation plan" + }, + { + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L13", + "id": "plans_2026_09_29_uvicorn_worker_scaling_global_constraints", + "community": 13, + "norm_label": "global constraints" + }, + { + "label": "Review Focus", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L23", + "id": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "community": 13, + "norm_label": "review focus" + }, + { + "label": "Task 1: Measure the concurrency ceiling and record the decision", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L35", + "id": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision", + "community": 13, + "norm_label": "task 1: measure the concurrency ceiling and record the decision" + }, + { + "label": "code:python (\"\"\"Measure whether the stocks query hot path is GIL-bound.)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L47", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_1", + "community": 13, + "norm_label": "code:python (\"\"\"measure whether the stocks query hot path is gil-bound.)" + }, + { + "label": "code:markdown (## Baseline (measured))", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L145", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_2", + "community": 13, + "norm_label": "code:markdown (## baseline (measured))" + }, + { + "label": "code:bash (git add scripts/bench_query.py docs/superpowers/uvicorn-work)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L158", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_3", + "community": 13, + "norm_label": "code:bash (git add scripts/bench_query.py docs/superpowers/uvicorn-work)" + }, + { + "label": "Task 2: Load the cache on the build-loser path", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L170", + "id": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", + "community": 13, + "norm_label": "task 2: load the cache on the build-loser path" + }, + { + "label": "code:python (def test_loser_path_loads_after_other_process_build(monkeypa)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L182", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_4", + "community": 13, + "norm_label": "code:python (def test_loser_path_loads_after_other_process_build(monkeypa)" + }, + { + "label": "code:python (def awaitFreshCacheAndLoad(self, timeout: float = 120.0, int)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L228", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_5", + "community": 13, + "norm_label": "code:python (def awaitfreshcacheandload(self, timeout: float = 120.0, int)" + }, + { + "label": "code:python (built = False)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L244", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_6", + "community": 13, + "norm_label": "code:python (built = false)" + }, + { + "label": "code:bash (git add main/app/stocks_api/cache.py tests/test_stocks_cache)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L285", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_7", + "community": 13, + "norm_label": "code:bash (git add main/app/stocks_api/cache.py tests/test_stocks_cache)" + }, + { + "label": "Task 3: Run migrations exactly once per deploy", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L292", + "id": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy", + "community": 13, + "norm_label": "task 3: run migrations exactly once per deploy" + }, + { + "label": "code:python (from main.utils import migrator)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L304", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_8", + "community": 13, + "norm_label": "code:python (from main.utils import migrator)" + }, + { + "label": "code:python (def shouldRunMigrations() -> bool:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L333", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_9", + "community": 13, + "norm_label": "code:python (def shouldrunmigrations() -> bool:)" + }, + { + "label": "code:bash (git add main/utils/migrator.py tests/test_migrator_guard.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L358", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_10", + "community": 13, + "norm_label": "code:bash (git add main/utils/migrator.py tests/test_migrator_guard.py)" + }, + { + "label": "Task 4: Size database pools by process count", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L365", + "id": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count", + "community": 13, + "norm_label": "task 4: size database pools by process count" + }, + { + "label": "code:python (import importlib)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L377", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_11", + "community": 13, + "norm_label": "code:python (import importlib)" + }, + { + "label": "code:python (DB_POOL_SIZE = int(os.getenv(\"DB_POOL_SIZE\", \"20\")))", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L407", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_12", + "community": 13, + "norm_label": "code:python (db_pool_size = int(os.getenv(\"db_pool_size\", \"20\")))" + }, + { + "label": "code:bash (git add config.py tests/test_config_pools.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L424", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_13", + "community": 13, + "norm_label": "code:bash (git add config.py tests/test_config_pools.py)" + }, + { + "label": "Task 5: Run STOCKS_API as N single-service processes behind nginx", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L431", + "id": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "community": 13, + "norm_label": "task 5: run stocks_api as n single-service processes behind nginx" + }, + { + "label": "code:python (import importlib)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L444", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_14", + "community": 13, + "norm_label": "code:python (import importlib)" + }, + { + "label": "code:python (if __name__ == \"__main__\":)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L476", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_15", + "community": 13, + "norm_label": "code:python (if __name__ == \"__main__\":)" + }, + { + "label": "code:python (if len(instances) > 1 and fcntl is None: # pragma: no cover)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L483", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_16", + "community": 13, + "norm_label": "code:python (if len(instances) > 1 and fcntl is none: # pragma: no cover)" + }, + { + "label": "code:yaml (api:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L494", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_17", + "community": 13, + "norm_label": "code:yaml (api:)" + }, + { + "label": "code:nginx (# Addresses/steps are chosen at implementation time (stub_st)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L641", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_18", + "community": 13, + "norm_label": "code:nginx (# addresses/steps are chosen at implementation time (stub_st)" + }, + { + "label": "code:bash (git add run.py main/utils/service_manager.py docker-compose.)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L681", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_19", + "community": 13, + "norm_label": "code:bash (git add run.py main/utils/service_manager.py docker-compose.)" + }, + { + "label": "Task 6: Verify the fleet (single build, one migration, shared frame)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L688", + "id": "plans_2026_09_29_uvicorn_worker_scaling_task_6_verify_the_fleet_single_build_one_migration_shared_frame", + "community": 13, + "norm_label": "task 6: verify the fleet (single build, one migration, shared frame)" + }, + { + "label": "code:powershell (# Verifies the multi-process stocks fleet: one build, one mi)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L700", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_20", + "community": 13, + "norm_label": "code:powershell (# verifies the multi-process stocks fleet: one build, one mi)" + }, + { + "label": "code:bash (git add scripts/verify_fleet.ps1 docs/superpowers/uvicorn-wo)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L752", + "id": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_21", + "community": 13, + "norm_label": "code:bash (git add scripts/verify_fleet.ps1 docs/superpowers/uvicorn-wo)" + }, + { + "label": "Self-Review", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L759", + "id": "plans_2026_09_29_uvicorn_worker_scaling_self_review", + "community": 13, + "norm_label": "self-review" + }, + { + "label": "2026-09-29-zerocopy-stocks-cache.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L1", + "id": "docs_superpowers_plans_2026_09_29_zerocopy_stocks_cache_md", + "community": 86, + "norm_label": "2026-09-29-zerocopy-stocks-cache.md" + }, + { + "label": "Zero-Copy Memory-Mapped Stocks Cache Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L1", + "id": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan", + "community": 86, + "norm_label": "zero-copy memory-mapped stocks cache implementation plan" + }, + { + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L13", + "id": "plans_2026_09_29_zerocopy_stocks_cache_global_constraints", + "community": 86, + "norm_label": "global constraints" + }, + { + "label": "Review Focus (spec-implied inputs most likely to bite)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L23", + "id": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "community": 86, + "norm_label": "review focus (spec-implied inputs most likely to bite)" + }, + { + "label": "Task 1: Presort at build time (ORDER BY + `b3_presorted` marker)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L33", + "id": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", + "community": 86, + "norm_label": "task 1: presort at build time (order by + `b3_presorted` marker)" + }, + { + "label": "code:python (def test_build_requests_presorted_rows(monkeypatch, tmp_path)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L47", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_1", + "community": 86, + "norm_label": "code:python (def test_build_requests_presorted_rows(monkeypatch, tmp_path)" + }, + { + "label": "code:python (STALE_AFTER_SECONDS = 6 * 3600)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L93", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_2", + "community": 86, + "norm_label": "code:python (stale_after_seconds = 6 * 3600)" + }, + { + "label": "code:python (result = stream.exec_driver_sql(\"SELECT * FROM b3_stocks ORD)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L101", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_3", + "community": 86, + "norm_label": "code:python (result = stream.exec_driver_sql(\"select * from b3_stocks ord)" + }, + { + "label": "code:python (schema = pa.schema(fields).with_metadata({PRESORTED_FLAG_KEY)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L107", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_4", + "community": 86, + "norm_label": "code:python (schema = pa.schema(fields).with_metadata({presorted_flag_key)" + }, + { + "label": "code:bash (git add main/app/stocks_api/cache.py tests/test_stocks_cache)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L118", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_5", + "community": 86, + "norm_label": "code:bash (git add main/app/stocks_api/cache.py tests/test_stocks_cache)" + }, + { + "label": "Task 2: Zero-copy mmap load (`readFeatherDataFrame` + marker-aware sort skip)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L125", + "id": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "community": 86, + "norm_label": "task 2: zero-copy mmap load (`readfeatherdataframe` + marker-aware sort skip)" + }, + { + "label": "code:python (monkeypatch.setattr(cache_mod, \"readFeatherDataFrame\", lambd)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L142", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_6", + "community": 86, + "norm_label": "code:python (monkeypatch.setattr(cache_mod, \"readfeatherdataframe\", lambd)" + }, + { + "label": "code:python (patch(\"main.app.stocks_api.cache.pd.read_feather\", return_va)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L148", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_7", + "community": 86, + "norm_label": "code:python (patch(\"main.app.stocks_api.cache.pd.read_feather\", return_va)" + }, + { + "label": "code:python (patch(\"main.app.stocks_api.cache.readFeatherDataFrame\", retu)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L152", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_8", + "community": 86, + "norm_label": "code:python (patch(\"main.app.stocks_api.cache.readfeatherdataframe\", retu)" + }, + { + "label": "code:python (assert pd.isna(df[\"NOTICIAS\"].iloc[1]))", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L159", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_9", + "community": 86, + "norm_label": "code:python (assert pd.isna(df[\"noticias\"].iloc[1]))" + }, + { + "label": "code:python (def test_read_feather_dataframe_uses_arrow_backed_columns(tm)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L165", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_10", + "community": 86, + "norm_label": "code:python (def test_read_feather_dataframe_uses_arrow_backed_columns(tm)" + }, + { + "label": "code:python (from pyarrow import feather)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L250", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_11", + "community": 86, + "norm_label": "code:python (from pyarrow import feather)" + }, + { + "label": "code:python (def readFeatherDataFrame(path) -> tuple[pd.DataFrame, bool]:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L256", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_12", + "community": 86, + "norm_label": "code:python (def readfeatherdataframe(path) -> tuple[pd.dataframe, bool]:)" + }, + { + "label": "code:python (df, presorted = readFeatherDataFrame(CACHE_FEATHER_PATH))", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L268", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_13", + "community": 86, + "norm_label": "code:python (df, presorted = readfeatherdataframe(cache_feather_path))" + }, + { + "label": "code:bash (git add main/app/stocks_api/cache.py tests/test_stocks_cache)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L285", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_14", + "community": 86, + "norm_label": "code:bash (git add main/app/stocks_api/cache.py tests/test_stocks_cache)" + }, + { + "label": "Task 3: ArrowDtype-aware JSON column decompression (`query.py` guard)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L292", + "id": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", + "community": 86, + "norm_label": "task 3: arrowdtype-aware json column decompression (`query.py` guard)" + }, + { + "label": "code:python (def test_deserialize_jsoncolumns_handles_arrowdtype_binary())", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L306", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_15", + "community": 86, + "norm_label": "code:python (def test_deserialize_jsoncolumns_handles_arrowdtype_binary())" + }, + { + "label": "code:python (if col in JSON_COLUMNS and (df[col].dtype == \"object\" or pd.)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L327", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_16", + "community": 86, + "norm_label": "code:python (if col in json_columns and (df[col].dtype == \"object\" or pd.)" + }, + { + "label": "code:python (if col in JSON_COLUMNS and ()", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L331", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_17", + "community": 86, + "norm_label": "code:python (if col in json_columns and ()" + }, + { + "label": "code:bash (git add main/app/stocks_api/query.py tests/test_stocks_cache)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L346", + "id": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_18", + "community": 86, + "norm_label": "code:bash (git add main/app/stocks_api/query.py tests/test_stocks_cache)" + }, + { + "label": "Execution Handoff", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L353", + "id": "plans_2026_09_29_zerocopy_stocks_cache_execution_handoff", + "community": 86, + "norm_label": "execution handoff" + }, { "label": "2026-09-04-wallet-design.md", "file_type": "document", @@ -9889,369 +11725,1818 @@ "norm_label": "spec self-review" }, { - "label": "_serviceToken()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L18", - "community": 500, - "norm_label": "_servicetoken()", - "id": "stocks_api_key_servicetoken" + "label": "2026-09-29-nginx-scaling-design.md", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L1", + "id": "docs_superpowers_specs_2026_09_29_nginx_scaling_design_md", + "community": 208, + "norm_label": "2026-09-29-nginx-scaling-design.md" }, { - "label": "_verifyUrl()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L22", - "community": 500, - "norm_label": "_verifyurl()", - "id": "stocks_api_key_verifyurl" + "label": "nginx Response Cache + Multi-Server Scaling \u2014 Design Spec", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L1", + "id": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "community": 208, + "norm_label": "nginx response cache + multi-server scaling \u2014 design spec" }, { - "label": "initVerifyClient()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L26", - "community": 500, - "norm_label": "initverifyclient()", - "id": "stocks_api_key_initverifyclient" + "label": "1. Context", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L9", + "id": "specs_2026_09_29_nginx_scaling_design_1_context", + "community": 208, + "norm_label": "1. context" }, { - "label": "closeVerifyClient()", - "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L33", - "community": 500, - "norm_label": "closeverifyclient()", - "id": "stocks_api_key_closeverifyclient" + "label": "2. Decisions", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L40", + "id": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "community": 208, + "norm_label": "2. decisions" }, { - "label": "requireServiceToken()", - "file_type": "code", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L245", - "community": 58, - "norm_label": "requireservicetoken()", - "id": "controller_authentication_controller_requireservicetoken" + "label": "D1 \u2014 Put an nginx response cache in front of `/stocks` (accepted)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L42", + "id": "specs_2026_09_29_nginx_scaling_design_d1_put_an_nginx_response_cache_in_front_of_stocks_accepted", + "community": 208, + "norm_label": "d1 \u2014 put an nginx response cache in front of `/stocks` (accepted)" }, { - "label": "verifyServiceKey()", - "file_type": "code", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L277", - "community": 58, - "norm_label": "verifyservicekey()", - "id": "controller_authentication_controller_verifyservicekey" + "label": "D2 \u2014 Raise the app-layer TTLs and cache `/fields` **before** any nginx work (accepted, Rev 2)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L55", + "id": "specs_2026_09_29_nginx_scaling_design_d2_raise_the_app_layer_ttls_and_cache_fields_before_any_nginx_work_accepted_rev_2", + "community": 208, + "norm_label": "d2 \u2014 raise the app-layer ttls and cache `/fields` **before** any nginx work (accepted, rev 2)" }, { - "label": "_serviceToken()", - "file_type": "code", - "source_file": "main/utils/roles.py", - "source_location": "L63", - "community": 491, - "norm_label": "_servicetoken()", - "id": "utils_roles_servicetoken" + "label": "D3 \u2014 Pinned static upstreams now; Docker Swarm routing mesh only at \u22655 nodes (accepted)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L59", + "id": "specs_2026_09_29_nginx_scaling_design_d3_pinned_static_upstreams_now_docker_swarm_routing_mesh_only_at_5_nodes_accepted", + "community": 208, + "norm_label": "d3 \u2014 pinned static upstreams now; docker swarm routing mesh only at \u22655 nodes (accepted)" }, { - "label": "_introspectUrl()", - "file_type": "code", - "source_file": "main/utils/roles.py", - "source_location": "L69", - "community": 491, - "norm_label": "_introspecturl()", - "id": "utils_roles_introspecturl" + "label": "D4 \u2014 Cache is per node, rebuilt on version; **not** NFS, not rsync (accepted)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L75", + "id": "specs_2026_09_29_nginx_scaling_design_d4_cache_is_per_node_rebuilt_on_version_not_nfs_not_rsync_accepted", + "community": 208, + "norm_label": "d4 \u2014 cache is per node, rebuilt on version; **not** nfs, not rsync (accepted)" }, { - "label": "_extractCredential()", - "file_type": "code", - "source_file": "main/utils/roles.py", - "source_location": "L75", - "community": 491, - "norm_label": "_extractcredential()", - "id": "utils_roles_extractcredential" + "label": "D5 \u2014 Redis is deferred (accepted, Rev 2)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L79", + "id": "specs_2026_09_29_nginx_scaling_design_d5_redis_is_deferred_accepted_rev_2", + "community": 208, + "norm_label": "d5 \u2014 redis is deferred (accepted, rev 2)" }, { - "label": "introspectUser()", - "file_type": "code", - "source_file": "main/utils/roles.py", - "source_location": "L92", - "community": 491, - "norm_label": "introspectuser()", - "id": "utils_roles_introspectuser" + "label": "D6 \u2014 Extraction order: STOCKS_API \u2192 ORUNMILA+ForgeVM \u2192 USER \u2192 scraper (accepted)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L83", + "id": "specs_2026_09_29_nginx_scaling_design_d6_extraction_order_stocks_api_orunmila_forgevm_user_scraper_accepted", + "community": 208, + "norm_label": "d6 \u2014 extraction order: stocks_api \u2192 orunmila+forgevm \u2192 user \u2192 scraper (accepted)" }, { - "label": "PrometheusSettings", - "file_type": "code", - "source_file": "config.py", - "source_location": "L59", - "community": 102, - "norm_label": "prometheussettings", - "id": "server_config_prometheussettings" + "label": "D7 \u2014 Health strategy stays passive until a black hole is observed (accepted)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L87", + "id": "specs_2026_09_29_nginx_scaling_design_d7_health_strategy_stays_passive_until_a_black_hole_is_observed_accepted", + "community": 208, + "norm_label": "d7 \u2014 health strategy stays passive until a black hole is observed (accepted)" }, { - "label": "agent.py", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L1", - "community": 116, - "norm_label": "agent.py", - "id": "main_app_prometheus_agent_py" + "label": "D8 \u2014 Cached HITs bypass the monthly quota counter (accepted, product-visible)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L91", + "id": "specs_2026_09_29_nginx_scaling_design_d8_cached_hits_bypass_the_monthly_quota_counter_accepted_product_visible", + "community": 208, + "norm_label": "d8 \u2014 cached hits bypass the monthly quota counter (accepted, product-visible)" }, { - "label": "safeFilter()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L25", - "community": 116, - "norm_label": "safefilter()", - "id": "prometheus_agent_safefilter" + "label": "D9 \u2014 Benchmark/result artifacts follow the draft convention (accepted, Rev 2)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L95", + "id": "specs_2026_09_29_nginx_scaling_design_d9_benchmark_result_artifacts_follow_the_draft_convention_accepted_rev_2", + "community": 208, + "norm_label": "d9 \u2014 benchmark/result artifacts follow the draft convention (accepted, rev 2)" }, { - "label": "persistEvent()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L31", - "community": 116, - "norm_label": "persistevent()", - "id": "prometheus_agent_persistevent" + "label": "D10 \u2014 The endpoint cache is invalidated on every feather reload (accepted)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L99", + "id": "specs_2026_09_29_nginx_scaling_design_d10_the_endpoint_cache_is_invalidated_on_every_feather_reload_accepted", + "community": 208, + "norm_label": "d10 \u2014 the endpoint cache is invalidated on every feather reload (accepted)" }, { - "label": "getClient()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L45", - "community": 116, - "norm_label": "getclient()", - "id": "prometheus_agent_getclient" + "label": "3. Caching policy (canonical)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L103", + "id": "specs_2026_09_29_nginx_scaling_design_3_caching_policy_canonical", + "community": 208, + "norm_label": "3. caching policy (canonical)" }, { - "label": "Prometheus", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L208", - "community": 116, - "norm_label": "prometheus", - "id": "prometheus_agent_prometheus" + "label": "4. Topology", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L130", + "id": "specs_2026_09_29_nginx_scaling_design_4_topology", + "community": 208, + "norm_label": "4. topology" }, { - "label": ".__init__()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L209", - "community": 116, - "norm_label": ".__init__()", - "id": "prometheus_agent_prometheus_init" + "label": "code:block1 (NODE A NODE B)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L135", + "id": "specs_2026_09_29_nginx_scaling_design_codeblock_1", + "community": 208, + "norm_label": "code:block1 (node a node b)" }, { - "label": "buildSystemPrompt()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L213", - "community": 116, - "norm_label": "buildsystemprompt()", - "id": "prometheus_agent_buildsystemprompt" + "label": "5. Quota and rate limits after caching", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L148", + "id": "specs_2026_09_29_nginx_scaling_design_5_quota_and_rate_limits_after_caching", + "community": 208, + "norm_label": "5. quota and rate limits after caching" }, { - "label": ".makeChat()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L242", - "community": 116, - "norm_label": ".makechat()", - "id": "prometheus_agent_prometheus_makechat" + "label": "6. Non-goals", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L159", + "id": "specs_2026_09_29_nginx_scaling_design_6_non_goals", + "community": 208, + "norm_label": "6. non-goals" }, { - "label": ".streamMessage()", - "file_type": "code", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L253", - "community": 116, - "norm_label": ".streammessage()", - "id": "prometheus_agent_prometheus_streammessage" + "label": "7. Acceptance criteria", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L163", + "id": "specs_2026_09_29_nginx_scaling_design_7_acceptance_criteria", + "community": 208, + "norm_label": "7. acceptance criteria" }, { - "label": "chat.py", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L1", - "community": 125, - "norm_label": "chat.py", - "id": "main_app_prometheus_chat_py" + "label": "8. Open decisions (product-owned)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L173", + "id": "specs_2026_09_29_nginx_scaling_design_8_open_decisions_product_owned", + "community": 208, + "norm_label": "8. open decisions (product-owned)" }, { - "label": "PrometheusChatManager", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L13", - "community": 68, - "norm_label": "prometheuschatmanager", - "id": "prometheus_chat_prometheuschatmanager" + "label": "9. Risks (top of the register; full 15-row table in the source document \u00a73.9)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L182", + "id": "specs_2026_09_29_nginx_scaling_design_9_risks_top_of_the_register_full_15_row_table_in_the_source_document_3_9", + "community": 208, + "norm_label": "9. risks (top of the register; full 15-row table in the source document \u00a73.9)" }, { - "label": "getUserSessions()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L15", - "community": 125, - "norm_label": "getusersessions()", - "id": "prometheus_chat_getusersessions" + "label": "10. Plans and follow-ups", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L195", + "id": "specs_2026_09_29_nginx_scaling_design_10_plans_and_follow_ups", + "community": 208, + "norm_label": "10. plans and follow-ups" }, { - "label": "createSession()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L33", - "community": 125, - "norm_label": "createsession()", - "id": "prometheus_chat_createsession" + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L47", + "community": 222, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_47" }, { - "label": "updateSessionTitle()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L41", - "community": 125, - "norm_label": "updatesessiontitle()", - "id": "prometheus_chat_updatesessiontitle" + "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L103", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_103" }, { - "label": "appendHistory()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L52", - "community": 125, - "norm_label": "appendhistory()", - "id": "prometheus_chat_appendhistory" + "label": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L168", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_168" }, { - "label": "getHistory()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L71", - "community": 125, - "norm_label": "gethistory()", - "id": "prometheus_chat_gethistory" + "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L236", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_236" }, { - "label": "deleteSession()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L92", - "community": 125, - "norm_label": "deletesession()", - "id": "prometheus_chat_deletesession" + "label": "Get real-time price quotation for a single Brazilian B3 stock. Returns th", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L290", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_290" }, { - "label": "verifySessionOwnership()", - "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L106", - "community": 125, - "norm_label": "verifysessionownership()", - "id": "prometheus_chat_verifysessionownership" + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L39", + "community": 222, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_39" }, { - "label": "compact.py", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L1", - "community": 80, - "norm_label": "compact.py", - "id": "main_app_prometheus_compact_py" + "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L95", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_95" }, { - "label": "getTokenizer()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L35", - "community": 80, - "norm_label": "gettokenizer()", - "id": "prometheus_compact_gettokenizer" + "label": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L160", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_160" }, { - "label": "countTokens()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L47", - "community": 80, - "norm_label": "counttokens()", - "id": "prometheus_compact_counttokens" + "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L228", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_228" }, { - "label": "getStocksFieldsUrl()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L64", - "community": 80, - "norm_label": "getstocksfieldsurl()", - "id": "prometheus_compact_getstocksfieldsurl" + "label": "Get real-time price quotation for a single Brazilian B3 stock. Returns th", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L282", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_282" }, { - "label": "isTransientFieldsError()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L68", - "community": 80, - "norm_label": "istransientfieldserror()", - "id": "prometheus_compact_istransientfieldserror" + "label": "Uvicorn Worker Scaling \u2014 Verified State and Evaluated Plan", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "community": 495, + "norm_label": "uvicorn worker scaling \u2014 verified state and evaluated plan", + "id": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan" }, { - "label": "fetchFieldsPayload()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L83", - "community": 80, - "norm_label": "fetchfieldspayload()", - "id": "prometheus_compact_fetchfieldspayload" + "label": "1. Verified current state (file:line)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L13", + "community": 495, + "norm_label": "1. verified current state (file:line)", + "id": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state_file_line" }, { - "label": "loadFieldData()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L89", - "community": 80, - "norm_label": "loadfielddata()", - "id": "prometheus_compact_loadfielddata" + "label": "1.1 Runtime topology \u2014 one process, many threads", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L15", + "community": 495, + "norm_label": "1.1 runtime topology \u2014 one process, many threads", + "id": "superpowers_uvicorn_worker_scaling_plan_1_1_runtime_topology_one_process_many_threads" }, { - "label": "getMetricRegex()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L105", - "community": 80, - "norm_label": "getmetricregex()", - "id": "prometheus_compact_getmetricregex" + "label": "1.2 The cache is already the right shape for multi-process", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L33", + "community": 495, + "norm_label": "1.2 the cache is already the right shape for multi-process", + "id": "superpowers_uvicorn_worker_scaling_plan_1_2_the_cache_is_already_the_right_shape_for_multi_process" }, { - "label": "dedup()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L119", - "community": 80, - "norm_label": "dedup()", - "id": "prometheus_compact_dedup" + "label": "1.3 Per-process state that multiplies with N", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L48", + "community": 495, + "norm_label": "1.3 per-process state that multiplies with n", + "id": "superpowers_uvicorn_worker_scaling_plan_1_3_per_process_state_that_multiplies_with_n" }, { - "label": "extractTickers()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L123", - "community": 80, - "norm_label": "extracttickers()", - "id": "prometheus_compact_extracttickers" + "label": "2. Options evaluated", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L60", + "community": 495, + "norm_label": "2. options evaluated", + "id": "superpowers_uvicorn_worker_scaling_plan_2_options_evaluated" }, { - "label": "extractMetrics()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L127", - "community": 80, - "norm_label": "extractmetrics()", - "id": "prometheus_compact_extractmetrics" + "label": "3. Exact required changes (before raising N)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L74", + "community": 495, + "norm_label": "3. exact required changes (before raising n)", + "id": "superpowers_uvicorn_worker_scaling_plan_3_exact_required_changes_before_raising_n" }, { - "label": "extractDecisions()", - "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "label": "4. Risks and open items", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L87", + "community": 495, + "norm_label": "4. risks and open items", + "id": "superpowers_uvicorn_worker_scaling_plan_4_risks_and_open_items" + }, + { + "label": "5. Baseline (measured)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L100", + "community": 495, + "norm_label": "5. baseline (measured)", + "id": "superpowers_uvicorn_worker_scaling_plan_5_baseline_measured" + }, + { + "label": "6. Evaluation of the user's `docs/nginx-scaling-plan.md`", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L106", + "community": 495, + "norm_label": "6. evaluation of the user's `docs/nginx-scaling-plan.md`", + "id": "superpowers_uvicorn_worker_scaling_plan_6_evaluation_of_the_user_s_docs_nginx_scaling_plan_md" + }, + { + "label": "7. What is out of scope (separate plan)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L121", + "community": 495, + "norm_label": "7. what is out of scope (separate plan)", + "id": "superpowers_uvicorn_worker_scaling_plan_7_what_is_out_of_scope_separate_plan" + }, + { + "label": "3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L49", + "community": 130, + "norm_label": "3. api contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `depends(usermanager.getcurrentuser)` + `depends(getsession)` throughout)", + "id": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" + }, + { + "label": "Uvicorn Worker Scaling \u2014 Verified State + Evaluated Plan", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "community": 495, + "norm_label": "uvicorn worker scaling \u2014 verified state + evaluated plan", + "id": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan" + }, + { + "label": "1. Verified current state", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L8", + "community": 495, + "norm_label": "1. verified current state", + "id": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state" + }, + { + "label": "1.1 Process model \u2014 exactly one process, several threads", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L10", + "community": 495, + "norm_label": "1.1 process model \u2014 exactly one process, several threads", + "id": "superpowers_uvicorn_worker_scaling_plan_1_1_process_model_exactly_one_process_several_threads" + }, + { + "label": "1.2 Cache (post-refactor) \u2014 RAM sharing works", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L23", + "community": 495, + "norm_label": "1.2 cache (post-refactor) \u2014 ram sharing works", + "id": "superpowers_uvicorn_worker_scaling_plan_1_2_cache_post_refactor_ram_sharing_works" + }, + { + "label": "1.3 Per-process resources that multiply with N workers", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L27", + "community": 495, + "norm_label": "1.3 per-process resources that multiply with n workers", + "id": "superpowers_uvicorn_worker_scaling_plan_1_3_per_process_resources_that_multiply_with_n_workers" + }, + { + "label": "2. The blocking defect (must fix before N > 1)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L40", + "community": 495, + "norm_label": "2. the blocking defect (must fix before n > 1)", + "id": "superpowers_uvicorn_worker_scaling_plan_2_the_blocking_defect_must_fix_before_n_1" + }, + { + "label": "code:block1 (275: lockFile = tryBuildLock())", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L44", + "community": 495, + "norm_label": "code:block1 (275: lockfile = trybuildlock())", + "id": "superpowers_uvicorn_worker_scaling_plan_codeblock_1" + }, + { + "label": "3. Options evaluated", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L66", + "community": 495, + "norm_label": "3. options evaluated", + "id": "superpowers_uvicorn_worker_scaling_plan_3_options_evaluated" + }, + { + "label": "4. Recommended plan", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L79", + "community": 495, + "norm_label": "4. recommended plan", + "id": "superpowers_uvicorn_worker_scaling_plan_4_recommended_plan" + }, + { + "label": "Phase 0 \u2014 Measure (half a day, no infra)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L81", + "community": 495, + "norm_label": "phase 0 \u2014 measure (half a day, no infra)", + "id": "superpowers_uvicorn_worker_scaling_plan_phase_0_measure_half_a_day_no_infra" + }, + { + "label": "Phase 1 \u2014 Correctness fixes (required before any N > 1)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L87", + "community": 495, + "norm_label": "phase 1 \u2014 correctness fixes (required before any n > 1)", + "id": "superpowers_uvicorn_worker_scaling_plan_phase_1_correctness_fixes_required_before_any_n_1" + }, + { + "label": "Phase 2 \u2014 Enable workers on one host (option c)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L93", + "community": 495, + "norm_label": "phase 2 \u2014 enable workers on one host (option c)", + "id": "superpowers_uvicorn_worker_scaling_plan_phase_2_enable_workers_on_one_host_option_c" + }, + { + "label": "Phase 3 \u2014 Multi-host (only if you split boxes)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L99", + "community": 495, + "norm_label": "phase 3 \u2014 multi-host (only if you split boxes)", + "id": "superpowers_uvicorn_worker_scaling_plan_phase_3_multi_host_only_if_you_split_boxes" + }, + { + "label": "5. Evaluation of the existing scaling plan (recovered from git)", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L109", + "community": 495, + "norm_label": "5. evaluation of the existing scaling plan (recovered from git)", + "id": "superpowers_uvicorn_worker_scaling_plan_5_evaluation_of_the_existing_scaling_plan_recovered_from_git" + }, + { + "label": "6. Risks / open items", + "file_type": "document", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L122", + "community": 495, + "norm_label": "6. risks / open items", + "id": "superpowers_uvicorn_worker_scaling_plan_6_risks_open_items" + }, + { + "label": "uvicorn-worker-scaling-plan.md", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "community": 487, + "norm_label": "uvicorn-worker-scaling-plan.md", + "id": "docs_uvicorn_worker_scaling_plan_md" + }, + { + "label": "Uvicorn Worker Scaling \u2014 Verified State + Evaluated Plan", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "community": 487, + "norm_label": "uvicorn worker scaling \u2014 verified state + evaluated plan", + "id": "docs_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan" + }, + { + "label": "1. Verified current state", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L8", + "community": 487, + "norm_label": "1. verified current state", + "id": "docs_uvicorn_worker_scaling_plan_1_verified_current_state" + }, + { + "label": "1.1 Process model \u2014 exactly one process, several threads", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L10", + "community": 487, + "norm_label": "1.1 process model \u2014 exactly one process, several threads", + "id": "docs_uvicorn_worker_scaling_plan_1_1_process_model_exactly_one_process_several_threads" + }, + { + "label": "1.2 Cache (post-refactor) \u2014 RAM sharing works", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L23", + "community": 487, + "norm_label": "1.2 cache (post-refactor) \u2014 ram sharing works", + "id": "docs_uvicorn_worker_scaling_plan_1_2_cache_post_refactor_ram_sharing_works" + }, + { + "label": "1.3 Per-process resources that multiply with N workers", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L27", + "community": 487, + "norm_label": "1.3 per-process resources that multiply with n workers", + "id": "docs_uvicorn_worker_scaling_plan_1_3_per_process_resources_that_multiply_with_n_workers" + }, + { + "label": "2. The blocking defect (must fix before N > 1)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L40", + "community": 487, + "norm_label": "2. the blocking defect (must fix before n > 1)", + "id": "docs_uvicorn_worker_scaling_plan_2_the_blocking_defect_must_fix_before_n_1" + }, + { + "label": "code:block1 (275: lockFile = tryBuildLock())", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L44", + "community": 487, + "norm_label": "code:block1 (275: lockfile = trybuildlock())", + "id": "docs_uvicorn_worker_scaling_plan_codeblock_1" + }, + { + "label": "3. Options evaluated", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L66", + "community": 487, + "norm_label": "3. options evaluated", + "id": "docs_uvicorn_worker_scaling_plan_3_options_evaluated" + }, + { + "label": "4. Recommended plan", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L79", + "community": 487, + "norm_label": "4. recommended plan", + "id": "docs_uvicorn_worker_scaling_plan_4_recommended_plan" + }, + { + "label": "Phase 0 \u2014 Measure (half a day, no infra)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L81", + "community": 487, + "norm_label": "phase 0 \u2014 measure (half a day, no infra)", + "id": "docs_uvicorn_worker_scaling_plan_phase_0_measure_half_a_day_no_infra" + }, + { + "label": "Phase 1 \u2014 Correctness fixes (required before any N > 1)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L87", + "community": 487, + "norm_label": "phase 1 \u2014 correctness fixes (required before any n > 1)", + "id": "docs_uvicorn_worker_scaling_plan_phase_1_correctness_fixes_required_before_any_n_1" + }, + { + "label": "Phase 2 \u2014 Enable workers on one host (option c)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L93", + "community": 487, + "norm_label": "phase 2 \u2014 enable workers on one host (option c)", + "id": "docs_uvicorn_worker_scaling_plan_phase_2_enable_workers_on_one_host_option_c" + }, + { + "label": "Phase 3 \u2014 Multi-host (only if you split boxes)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L99", + "community": 487, + "norm_label": "phase 3 \u2014 multi-host (only if you split boxes)", + "id": "docs_uvicorn_worker_scaling_plan_phase_3_multi_host_only_if_you_split_boxes" + }, + { + "label": "5. Evaluation of the existing scaling plan (recovered from git)", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L109", + "community": 487, + "norm_label": "5. evaluation of the existing scaling plan (recovered from git)", + "id": "docs_uvicorn_worker_scaling_plan_5_evaluation_of_the_existing_scaling_plan_recovered_from_git" + }, + { + "label": "6. Risks / open items", + "file_type": "document", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L122", + "community": 487, + "norm_label": "6. risks / open items", + "id": "docs_uvicorn_worker_scaling_plan_6_risks_open_items" + }, + { + "label": "6.1 DB & migrations (`user_db`) \u2014 READY, 2 actions", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L85", + "community": 130, + "norm_label": "6.1 db & migrations (`user_db`) \u2014 ready, 2 actions", + "id": "superpowers_investidor10_wallet_spec_6_1_db_migrations_user_db_ready_2_actions" + }, + { + "label": "6.2 Stocks/price access \u2014 READY for full-series; ONE new helper needed", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L92", + "community": 130, + "norm_label": "6.2 stocks/price access \u2014 ready for full-series; one new helper needed", + "id": "superpowers_investidor10_wallet_spec_6_2_stocks_price_access_ready_for_full_series_one_new_helper_needed" + }, + { + "label": "6.3 Wiring / auth / tests \u2014 READY", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L98", + "community": 130, + "norm_label": "6.3 wiring / auth / tests \u2014 ready", + "id": "superpowers_investidor10_wallet_spec_6_3_wiring_auth_tests_ready" + }, + { + "label": "6.4 Scraper pipeline (P2 dividends / has_b3) \u2014 READY (public sources only)", + "file_type": "document", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L104", + "community": 130, + "norm_label": "6.4 scraper pipeline (p2 dividends / has_b3) \u2014 ready (public sources only)", + "id": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_ready_public_sources_only" + }, + { + "label": "investidor10-wallet-research.md", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L1", + "community": 582, + "norm_label": "investidor10-wallet-research.md", + "id": "docs_investidor10_wallet_research_md" + }, + { + "label": "Investidor10 Wallet \u2014 Empirical Research for Mansa", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L1", + "community": 582, + "norm_label": "investidor10 wallet \u2014 empirical research for mansa", + "id": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa" + }, + { + "label": "1. Feature inventory + nav structure", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L10", + "community": 582, + "norm_label": "1. feature inventory + nav structure", + "id": "docs_investidor10_wallet_research_1_feature_inventory_nav_structure" + }, + { + "label": "2. User lifecycle end-to-end", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L30", + "community": 582, + "norm_label": "2. user lifecycle end-to-end", + "id": "docs_investidor10_wallet_research_2_user_lifecycle_end_to_end" + }, + { + "label": "3. Wallet API reference", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L40", + "community": 582, + "norm_label": "3. wallet api reference", + "id": "docs_investidor10_wallet_research_3_wallet_api_reference" + }, + { + "label": "4. Data model inference (from payloads, no DB access)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L65", + "community": 582, + "norm_label": "4. data model inference (from payloads, no db access)", + "id": "docs_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access" + }, + { + "label": "5. Product logic", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L74", + "community": 582, + "norm_label": "5. product logic", + "id": "docs_investidor10_wallet_research_5_product_logic" + }, + { + "label": "5b. Gaps / unverified (do not treat as fact)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L82", + "community": 582, + "norm_label": "5b. gaps / unverified (do not treat as fact)", + "id": "docs_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact" + }, + { + "label": "6. Concrete Mansa proposal (build first \u2192 later; minimal sketches)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L86", + "community": 582, + "norm_label": "6. concrete mansa proposal (build first \u2192 later; minimal sketches)", + "id": "docs_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches" + }, + { + "label": "investidor10-wallet-spec.md", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L1", + "community": 583, + "norm_label": "investidor10-wallet-spec.md", + "id": "docs_investidor10_wallet_spec_md" + }, + { + "label": "Mansa Wallet \u2014 Spec-Driven Implementation Spec", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L1", + "community": 583, + "norm_label": "mansa wallet \u2014 spec-driven implementation spec", + "id": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec" + }, + { + "label": "1. Requirements", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L12", + "community": 583, + "norm_label": "1. requirements", + "id": "docs_investidor10_wallet_spec_1_requirements" + }, + { + "label": "1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L14", + "community": 583, + "norm_label": "1.1 functional (per surface; tags: exists = build on it, partial = half reusable, missing = greenfield)", + "id": "docs_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield" + }, + { + "label": "1.2 Non-functional", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L28", + "community": 583, + "norm_label": "1.2 non-functional", + "id": "docs_investidor10_wallet_spec_1_2_non_functional" + }, + { + "label": "2. Domain model", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L38", + "community": 583, + "norm_label": "2. domain model", + "id": "docs_investidor10_wallet_spec_2_domain_model" + }, + { + "label": "3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L49", + "community": 583, + "norm_label": "3. api contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `depends(usermanager.getcurrentuser)` + `depends(getsession)` throughout)", + "id": "docs_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" + }, + { + "label": "4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L66", + "community": 583, + "norm_label": "4. phased build plan (writing-plans: each phase independently reviewable; reviewer pass per phase)", + "id": "docs_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase" + }, + { + "label": "5. Risks / assumptions (honest flags carried over \u2014 do not treat as fact)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L72", + "community": 583, + "norm_label": "5. risks / assumptions (honest flags carried over \u2014 do not treat as fact)", + "id": "docs_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact" + }, + { + "label": "6. Readiness assessment (s3, verified 2026-09-29) \u2014 prerequisites before P1", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L81", + "community": 583, + "norm_label": "6. readiness assessment (s3, verified 2026-09-29) \u2014 prerequisites before p1", + "id": "docs_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1" + }, + { + "label": "6.1 DB & migrations (`user_db`) \u2014 READY, 2 actions", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L85", + "community": 583, + "norm_label": "6.1 db & migrations (`user_db`) \u2014 ready, 2 actions", + "id": "docs_investidor10_wallet_spec_6_1_db_migrations_user_db_ready_2_actions" + }, + { + "label": "6.2 Stocks/price access \u2014 READY for full-series; ONE new helper needed", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L92", + "community": 583, + "norm_label": "6.2 stocks/price access \u2014 ready for full-series; one new helper needed", + "id": "docs_investidor10_wallet_spec_6_2_stocks_price_access_ready_for_full_series_one_new_helper_needed" + }, + { + "label": "6.3 Wiring / auth / tests \u2014 READY", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L98", + "community": 583, + "norm_label": "6.3 wiring / auth / tests \u2014 ready", + "id": "docs_investidor10_wallet_spec_6_3_wiring_auth_tests_ready" + }, + { + "label": "6.4 Scraper pipeline (P2 dividends / has_b3) \u2014 READY (public sources only)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L104", + "community": 583, + "norm_label": "6.4 scraper pipeline (p2 dividends / has_b3) \u2014 ready (public sources only)", + "id": "docs_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_ready_public_sources_only" + }, + { + "label": "6.5 Ordered actions before P1 code", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L110", + "community": 583, + "norm_label": "6.5 ordered actions before p1 code", + "id": "docs_investidor10_wallet_spec_6_5_ordered_actions_before_p1_code" + }, + { + "label": "nginx-scaling-plan.md", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L1", + "community": 591, + "norm_label": "nginx-scaling-plan.md", + "id": "docs_nginx_scaling_plan_md" + }, + { + "label": "nginx Scaling Plan \u2014 reverse proxy + response cache for `/stocks`, and the multi-server evolution", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L1", + "community": 591, + "norm_label": "nginx scaling plan \u2014 reverse proxy + response cache for `/stocks`, and the multi-server evolution", + "id": "docs_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution" + }, + { + "label": "0. Purpose and constraints", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L11", + "community": 591, + "norm_label": "0. purpose and constraints", + "id": "docs_nginx_scaling_plan_0_purpose_and_constraints" + }, + { + "label": "Part 1 \u2014 Implementation plan", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L31", + "community": 475, + "norm_label": "part 1 \u2014 implementation plan", + "id": "docs_nginx_scaling_plan_part_1_implementation_plan" + }, + { + "label": "1.1 Architecture decision", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L33", + "community": 475, + "norm_label": "1.1 architecture decision", + "id": "docs_nginx_scaling_plan_1_1_architecture_decision" + }, + { + "label": "1.2 File layout", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L46", + "community": 475, + "norm_label": "1.2 file layout", + "id": "docs_nginx_scaling_plan_1_2_file_layout" + }, + { + "label": "code:block1 (nginx/)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L49", + "community": 475, + "norm_label": "code:block1 (nginx/)", + "id": "docs_nginx_scaling_plan_codeblock_1" + }, + { + "label": "1.3 Phase P0 \u2014 nginx service + config skeleton", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L63", + "community": 593, + "norm_label": "1.3 phase p0 \u2014 nginx service + config skeleton", + "id": "docs_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton" + }, + { + "label": "code:yaml (nginx:)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L65", + "community": 593, + "norm_label": "code:yaml (nginx:)", + "id": "docs_nginx_scaling_plan_codeblock_2" + }, + { + "label": "code:nginx (proxy_cache_path /var/cache/nginx/stocks)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L85", + "community": 593, + "norm_label": "code:nginx (proxy_cache_path /var/cache/nginx/stocks)", + "id": "docs_nginx_scaling_plan_codeblock_3" + }, + { + "label": "code:nginx (upstream stocks_api {)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L106", + "community": 593, + "norm_label": "code:nginx (upstream stocks_api {)", + "id": "docs_nginx_scaling_plan_codeblock_4" + }, + { + "label": "1.4 Phase P1 \u2014 cache locations, TTL table, directives", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L119", + "community": 594, + "norm_label": "1.4 phase p1 \u2014 cache locations, ttl table, directives", + "id": "docs_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives" + }, + { + "label": "code:nginx (proxy_pass http://stocks_api;)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L122", + "community": 594, + "norm_label": "code:nginx (proxy_pass http://stocks_api;)", + "id": "docs_nginx_scaling_plan_codeblock_5" + }, + { + "label": "code:nginx (server {)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L153", + "community": 594, + "norm_label": "code:nginx (server {)", + "id": "docs_nginx_scaling_plan_codeblock_6" + }, + { + "label": "code:bash (K=sk_test_...; U='http://localhost/stocks/historical?search=)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L209", + "community": 594, + "norm_label": "code:bash (k=sk_test_...; u='http://localhost/stocks/historical?search=)", + "id": "docs_nginx_scaling_plan_codeblock_7" + }, + { + "label": "1.5 Phase P2 \u2014 port scheme, worker containers, keepalive", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L218", + "community": 475, + "norm_label": "1.5 phase p2 \u2014 port scheme, worker containers, keepalive", + "id": "docs_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive" + }, + { + "label": "code:yaml (stocksapi:)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L224", + "community": 475, + "norm_label": "code:yaml (stocksapi:)", + "id": "docs_nginx_scaling_plan_codeblock_8" + }, + { + "label": "1.6 Phase P3 \u2014 remote VPS upstreams + health strategy", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L244", + "community": 475, + "norm_label": "1.6 phase p3 \u2014 remote vps upstreams + health strategy", + "id": "docs_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy" + }, + { + "label": "code:nginx (upstream stocks_api {)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L246", + "community": 475, + "norm_label": "code:nginx (upstream stocks_api {)", + "id": "docs_nginx_scaling_plan_codeblock_9" + }, + { + "label": "code:nginx (proxy_next_upstream error timeout http_502 http_503 http_504)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L258", + "community": 475, + "norm_label": "code:nginx (proxy_next_upstream error timeout http_502 http_503 http_504)", + "id": "docs_nginx_scaling_plan_codeblock_10" + }, + { + "label": "1.7 Phase P4 \u2014 handoff design (no code in this plan)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L276", + "community": 475, + "norm_label": "1.7 phase p4 \u2014 handoff design (no code in this plan)", + "id": "docs_nginx_scaling_plan_1_7_phase_p4_handoff_design_no_code_in_this_plan" + }, + { + "label": "1.8 Quota / rate-limit semantics after caching", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L287", + "community": 475, + "norm_label": "1.8 quota / rate-limit semantics after caching", + "id": "docs_nginx_scaling_plan_1_8_quota_rate_limit_semantics_after_caching" + }, + { + "label": "1.9 Anti-scraping note (TODO 17)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L299", + "community": 475, + "norm_label": "1.9 anti-scraping note (todo 17)", + "id": "docs_nginx_scaling_plan_1_9_anti_scraping_note_todo_17" + }, + { + "label": "1.10 Edge cases / risks (implementation)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L303", + "community": 475, + "norm_label": "1.10 edge cases / risks (implementation)", + "id": "docs_nginx_scaling_plan_1_10_edge_cases_risks_implementation" + }, + { + "label": "Part 2 \u2014 Benchmark plan", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L314", + "community": 512, + "norm_label": "part 2 \u2014 benchmark plan", + "id": "docs_nginx_scaling_plan_part_2_benchmark_plan" + }, + { + "label": "2.0 Grounding: what the code actually does", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L316", + "community": 512, + "norm_label": "2.0 grounding: what the code actually does", + "id": "docs_nginx_scaling_plan_2_0_grounding_what_the_code_actually_does" + }, + { + "label": "2.1 Hypotheses", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L348", + "community": 512, + "norm_label": "2.1 hypotheses", + "id": "docs_nginx_scaling_plan_2_1_hypotheses" + }, + { + "label": "2.2 Tooling", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L357", + "community": 570, + "norm_label": "2.2 tooling", + "id": "docs_nginx_scaling_plan_2_2_tooling" + }, + { + "label": "code:bash (# Windows/Docker Desktop: do NOT use --network host (the Lin)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L360", + "community": 570, + "norm_label": "code:bash (# windows/docker desktop: do not use --network host (the lin)", + "id": "docs_nginx_scaling_plan_codeblock_11" + }, + { + "label": "code:bash (curl -s -o /dev/null -w '%header{x-cache-status}\\n' -H \"X-AP)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L373", + "community": 570, + "norm_label": "code:bash (curl -s -o /dev/null -w '%header{x-cache-status}\\n' -h \"x-ap)", + "id": "docs_nginx_scaling_plan_codeblock_12" + }, + { + "label": "code:bash (docker stats --no-stream --format \"{{.Name}},{{.CPUPerc}},{{)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L381", + "community": 570, + "norm_label": "code:bash (docker stats --no-stream --format \"{{.name}},{{.cpuperc}},{{)", + "id": "docs_nginx_scaling_plan_codeblock_13" + }, + { + "label": "code:bash (docker exec api sh -c \"pidstat -w -p 1 1 30\" # if sysst)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L387", + "community": 570, + "norm_label": "code:bash (docker exec api sh -c \"pidstat -w -p 1 1 30\" # if sysst)", + "id": "docs_nginx_scaling_plan_codeblock_14" + }, + { + "label": "code:block15 (tests/perf/nginx/)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L398", + "community": 570, + "norm_label": "code:block15 (tests/perf/nginx/)", + "id": "docs_nginx_scaling_plan_codeblock_15" + }, + { + "label": "2.3 Scenarios", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L407", + "community": 512, + "norm_label": "2.3 scenarios", + "id": "docs_nginx_scaling_plan_2_3_scenarios" + }, + { + "label": "2.4 Protocol", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L419", + "community": 512, + "norm_label": "2.4 protocol", + "id": "docs_nginx_scaling_plan_2_4_protocol" + }, + { + "label": "2.5 Metrics", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L430", + "community": 512, + "norm_label": "2.5 metrics", + "id": "docs_nginx_scaling_plan_2_5_metrics" + }, + { + "label": "2.6 Acceptance thresholds \u2014 **ALL PROPOSED, freeze after first real run**", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L434", + "community": 512, + "norm_label": "2.6 acceptance thresholds \u2014 **all proposed, freeze after first real run**", + "id": "docs_nginx_scaling_plan_2_6_acceptance_thresholds_all_proposed_freeze_after_first_real_run" + }, + { + "label": "2.7 Results doc layout", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L451", + "community": 512, + "norm_label": "2.7 results doc layout", + "id": "docs_nginx_scaling_plan_2_7_results_doc_layout" + }, + { + "label": "code:block16 (docs/benchmarks/nginx/)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L453", + "community": 512, + "norm_label": "code:block16 (docs/benchmarks/nginx/)", + "id": "docs_nginx_scaling_plan_codeblock_16" + }, + { + "label": "2.8 Feeding `/status` (TODO 14)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L460", + "community": 512, + "norm_label": "2.8 feeding `/status` (todo 14)", + "id": "docs_nginx_scaling_plan_2_8_feeding_status_todo_14" + }, + { + "label": "2.9 Benchmark risks", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L466", + "community": 512, + "norm_label": "2.9 benchmark risks", + "id": "docs_nginx_scaling_plan_2_9_benchmark_risks" + }, + { + "label": "Part 3 \u2014 Future scaling evolution + risks", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L477", + "community": 183, + "norm_label": "part 3 \u2014 future scaling evolution + risks", + "id": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks" + }, + { + "label": "3.0 Verified ground truth", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L479", + "community": 183, + "norm_label": "3.0 verified ground truth", + "id": "docs_nginx_scaling_plan_3_0_verified_ground_truth" + }, + { + "label": "3.1 Target topology", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L496", + "community": 183, + "norm_label": "3.1 target topology", + "id": "docs_nginx_scaling_plan_3_1_target_topology" + }, + { + "label": "code:block17 (NODE A NODE B)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L501", + "community": 183, + "norm_label": "code:block17 (node a node b)", + "id": "docs_nginx_scaling_plan_codeblock_17" + }, + { + "label": "3.2 Worker-container extraction", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L513", + "community": 183, + "norm_label": "3.2 worker-container extraction", + "id": "docs_nginx_scaling_plan_3_2_worker_container_extraction" + }, + { + "label": "3.3 nginx upstream evolution \u2014 validated against the user's plan", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L530", + "community": 183, + "norm_label": "3.3 nginx upstream evolution \u2014 validated against the user's plan", + "id": "docs_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan" + }, + { + "label": "code:nginx (upstream stocks_api { server 10.0.0.12:3200 max_fails=3 fail)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L534", + "community": 183, + "norm_label": "code:nginx (upstream stocks_api { server 10.0.0.12:3200 max_fails=3 fail)", + "id": "docs_nginx_scaling_plan_codeblock_18" + }, + { + "label": "3.4 TODO 13 migration \u2014 drop `{service}_HOST`/`{service}_PORT`", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L551", + "community": 183, + "norm_label": "3.4 todo 13 migration \u2014 drop `{service}_host`/`{service}_port`", + "id": "docs_nginx_scaling_plan_3_4_todo_13_migration_drop_service_host_service_port" + }, + { + "label": "3.5 Redis \u2014 exactly two jobs", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L558", + "community": 183, + "norm_label": "3.5 redis \u2014 exactly two jobs", + "id": "docs_nginx_scaling_plan_3_5_redis_exactly_two_jobs" + }, + { + "label": "3.6 Cache strategy across boxes", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L574", + "community": 183, + "norm_label": "3.6 cache strategy across boxes", + "id": "docs_nginx_scaling_plan_3_6_cache_strategy_across_boxes" + }, + { + "label": "3.7 Autoscaling story (TODO 11)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L580", + "community": 183, + "norm_label": "3.7 autoscaling story (todo 11)", + "id": "docs_nginx_scaling_plan_3_7_autoscaling_story_todo_11" + }, + { + "label": "3.8 ForgeVM interplay (TODO 12)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L585", + "community": 183, + "norm_label": "3.8 forgevm interplay (todo 12)", + "id": "docs_nginx_scaling_plan_3_8_forgevm_interplay_todo_12" + }, + { + "label": "3.9 Risk register", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L589", + "community": 183, + "norm_label": "3.9 risk register", + "id": "docs_nginx_scaling_plan_3_9_risk_register" + }, + { + "label": "3.10 Migration sequence + verification", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L609", + "community": 183, + "norm_label": "3.10 migration sequence + verification", + "id": "docs_nginx_scaling_plan_3_10_migration_sequence_verification" + }, + { + "label": "Open decisions (blocking or product-owned)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L628", + "community": 591, + "norm_label": "open decisions (blocking or product-owned)", + "id": "docs_nginx_scaling_plan_open_decisions_blocking_or_product_owned" + }, + { + "label": "Next actions (not in scope here)", + "file_type": "document", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L636", + "community": 591, + "norm_label": "next actions (not in scope here)", + "id": "docs_nginx_scaling_plan_next_actions_not_in_scope_here" + }, + { + "label": "_serviceToken()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L18", + "community": 500, + "norm_label": "_servicetoken()", + "id": "stocks_api_key_servicetoken" + }, + { + "label": "_verifyUrl()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L22", + "community": 500, + "norm_label": "_verifyurl()", + "id": "stocks_api_key_verifyurl" + }, + { + "label": "initVerifyClient()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L26", + "community": 500, + "norm_label": "initverifyclient()", + "id": "stocks_api_key_initverifyclient" + }, + { + "label": "closeVerifyClient()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L33", + "community": 500, + "norm_label": "closeverifyclient()", + "id": "stocks_api_key_closeverifyclient" + }, + { + "label": "requireServiceToken()", + "file_type": "code", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L245", + "community": 58, + "norm_label": "requireservicetoken()", + "id": "controller_authentication_controller_requireservicetoken" + }, + { + "label": "verifyServiceKey()", + "file_type": "code", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L277", + "community": 58, + "norm_label": "verifyservicekey()", + "id": "controller_authentication_controller_verifyservicekey" + }, + { + "label": "_serviceToken()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L63", + "community": 523, + "norm_label": "_servicetoken()", + "id": "utils_roles_servicetoken" + }, + { + "label": "_introspectUrl()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L69", + "community": 523, + "norm_label": "_introspecturl()", + "id": "utils_roles_introspecturl" + }, + { + "label": "_extractCredential()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L75", + "community": 523, + "norm_label": "_extractcredential()", + "id": "utils_roles_extractcredential" + }, + { + "label": "introspectUser()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L92", + "community": 523, + "norm_label": "introspectuser()", + "id": "utils_roles_introspectuser" + }, + { + "label": "PrometheusSettings", + "file_type": "code", + "source_file": "config.py", + "source_location": "L59", + "community": 102, + "norm_label": "prometheussettings", + "id": "server_config_prometheussettings" + }, + { + "label": "agent.py", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L1", + "community": 116, + "norm_label": "agent.py", + "id": "main_app_prometheus_agent_py" + }, + { + "label": "safeFilter()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L25", + "community": 116, + "norm_label": "safefilter()", + "id": "prometheus_agent_safefilter" + }, + { + "label": "persistEvent()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L31", + "community": 116, + "norm_label": "persistevent()", + "id": "prometheus_agent_persistevent" + }, + { + "label": "getClient()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L45", + "community": 116, + "norm_label": "getclient()", + "id": "prometheus_agent_getclient" + }, + { + "label": "Prometheus", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L208", + "community": 116, + "norm_label": "prometheus", + "id": "prometheus_agent_prometheus" + }, + { + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L209", + "community": 116, + "norm_label": ".__init__()", + "id": "prometheus_agent_prometheus_init" + }, + { + "label": "buildSystemPrompt()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L213", + "community": 116, + "norm_label": "buildsystemprompt()", + "id": "prometheus_agent_buildsystemprompt" + }, + { + "label": ".makeChat()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L242", + "community": 116, + "norm_label": ".makechat()", + "id": "prometheus_agent_prometheus_makechat" + }, + { + "label": ".streamMessage()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L253", + "community": 116, + "norm_label": ".streammessage()", + "id": "prometheus_agent_prometheus_streammessage" + }, + { + "label": "chat.py", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L1", + "community": 125, + "norm_label": "chat.py", + "id": "main_app_prometheus_chat_py" + }, + { + "label": "PrometheusChatManager", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L13", + "community": 172, + "norm_label": "prometheuschatmanager", + "id": "prometheus_chat_prometheuschatmanager" + }, + { + "label": "getUserSessions()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L15", + "community": 125, + "norm_label": "getusersessions()", + "id": "prometheus_chat_getusersessions" + }, + { + "label": "createSession()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L33", + "community": 125, + "norm_label": "createsession()", + "id": "prometheus_chat_createsession" + }, + { + "label": "updateSessionTitle()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L41", + "community": 125, + "norm_label": "updatesessiontitle()", + "id": "prometheus_chat_updatesessiontitle" + }, + { + "label": "appendHistory()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L52", + "community": 125, + "norm_label": "appendhistory()", + "id": "prometheus_chat_appendhistory" + }, + { + "label": "getHistory()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L71", + "community": 125, + "norm_label": "gethistory()", + "id": "prometheus_chat_gethistory" + }, + { + "label": "deleteSession()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L92", + "community": 125, + "norm_label": "deletesession()", + "id": "prometheus_chat_deletesession" + }, + { + "label": "verifySessionOwnership()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L106", + "community": 125, + "norm_label": "verifysessionownership()", + "id": "prometheus_chat_verifysessionownership" + }, + { + "label": "compact.py", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L1", + "community": 80, + "norm_label": "compact.py", + "id": "main_app_prometheus_compact_py" + }, + { + "label": "getTokenizer()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L35", + "community": 80, + "norm_label": "gettokenizer()", + "id": "prometheus_compact_gettokenizer" + }, + { + "label": "countTokens()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L47", + "community": 80, + "norm_label": "counttokens()", + "id": "prometheus_compact_counttokens" + }, + { + "label": "getStocksFieldsUrl()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L64", + "community": 80, + "norm_label": "getstocksfieldsurl()", + "id": "prometheus_compact_getstocksfieldsurl" + }, + { + "label": "isTransientFieldsError()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L68", + "community": 80, + "norm_label": "istransientfieldserror()", + "id": "prometheus_compact_istransientfieldserror" + }, + { + "label": "fetchFieldsPayload()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L83", + "community": 80, + "norm_label": "fetchfieldspayload()", + "id": "prometheus_compact_fetchfieldspayload" + }, + { + "label": "loadFieldData()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L89", + "community": 80, + "norm_label": "loadfielddata()", + "id": "prometheus_compact_loadfielddata" + }, + { + "label": "getMetricRegex()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L105", + "community": 80, + "norm_label": "getmetricregex()", + "id": "prometheus_compact_getmetricregex" + }, + { + "label": "dedup()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L119", + "community": 80, + "norm_label": "dedup()", + "id": "prometheus_compact_dedup" + }, + { + "label": "extractTickers()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L123", + "community": 80, + "norm_label": "extracttickers()", + "id": "prometheus_compact_extracttickers" + }, + { + "label": "extractMetrics()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L127", + "community": 80, + "norm_label": "extractmetrics()", + "id": "prometheus_compact_extractmetrics" + }, + { + "label": "extractDecisions()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", "source_location": "L131", "community": 80, "norm_label": "extractdecisions()", @@ -10352,7 +13637,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L1", - "community": 12, + "community": 84, "norm_label": "mcp.py", "id": "main_app_prometheus_mcp_py" }, @@ -10361,7 +13646,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L21", - "community": 12, + "community": 84, "norm_label": "buildclient()", "id": "prometheus_mcp_buildclient" }, @@ -10370,7 +13655,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L29", - "community": 12, + "community": 84, "norm_label": "connect()", "id": "prometheus_mcp_connect" }, @@ -10379,7 +13664,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L36", - "community": 12, + "community": 84, "norm_label": "mcpclientpool", "id": "prometheus_mcp_mcpclientpool" }, @@ -10388,7 +13673,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L37", - "community": 12, + "community": 84, "norm_label": ".__init__()", "id": "prometheus_mcp_mcpclientpool_init" }, @@ -10397,7 +13682,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L42", - "community": 12, + "community": 84, "norm_label": ".initialize()", "id": "prometheus_mcp_mcpclientpool_initialize" }, @@ -10406,7 +13691,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L56", - "community": 12, + "community": 84, "norm_label": ".getclients()", "id": "prometheus_mcp_mcpclientpool_getclients" }, @@ -10415,7 +13700,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L63", - "community": 12, + "community": 84, "norm_label": ".healthcheck()", "id": "prometheus_mcp_mcpclientpool_healthcheck" }, @@ -10424,7 +13709,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L75", - "community": 12, + "community": 84, "norm_label": ".reconnect()", "id": "prometheus_mcp_mcpclientpool_reconnect" }, @@ -10433,7 +13718,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L90", - "community": 12, + "community": 84, "norm_label": ".close()", "id": "prometheus_mcp_mcpclientpool_close" }, @@ -10505,7 +13790,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L104", - "community": 13, + "community": 53, "norm_label": "minmax()", "id": "prometheus_memory_minmax" }, @@ -10532,7 +13817,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L140", - "community": 13, + "community": 53, "norm_label": "scorerow()", "id": "prometheus_memory_scorerow" }, @@ -10541,7 +13826,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L152", - "community": 13, + "community": 53, "norm_label": "scorerecency()", "id": "prometheus_memory_scorerecency" }, @@ -10550,7 +13835,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L162", - "community": 13, + "community": 53, "norm_label": "scorecandidates()", "id": "prometheus_memory_scorecandidates" }, @@ -10559,7 +13844,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L179", - "community": 80, + "community": 53, "norm_label": "sumtokens()", "id": "prometheus_memory_sumtokens" }, @@ -10613,7 +13898,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L286", - "community": 13, + "community": 53, "norm_label": "search()", "id": "prometheus_memory_search" }, @@ -10622,7 +13907,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L349", - "community": 13, + "community": 53, "norm_label": "fulltextsearch()", "id": "prometheus_memory_fulltextsearch" }, @@ -10928,7 +14213,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L1", - "community": 523, + "community": 571, "norm_label": "tools.py", "id": "main_app_prometheus_tools_py" }, @@ -10946,7 +14231,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L51", - "community": 126, + "community": 528, "norm_label": "save_memory()", "id": "prometheus_tools_save_memory" }, @@ -10955,7 +14240,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L93", - "community": 487, + "community": 546, "norm_label": "execute_code()", "id": "prometheus_tools_execute_code" }, @@ -10964,7 +14249,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L114", - "community": 208, + "community": 573, "norm_label": "read_file()", "id": "prometheus_tools_read_file" }, @@ -10973,7 +14258,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L128", - "community": 529, + "community": 525, "norm_label": "write_file()", "id": "prometheus_tools_write_file" }, @@ -11018,7 +14303,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L52", - "community": 126, + "community": 528, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_52" }, @@ -11027,7 +14312,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L94", - "community": 487, + "community": 546, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", "id": "prometheus_tools_rationale_94" }, @@ -11036,7 +14321,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L115", - "community": 208, + "community": 573, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_115" }, @@ -11045,7 +14330,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L129", - "community": 529, + "community": 525, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", "id": "prometheus_tools_rationale_129" }, @@ -11072,7 +14357,7 @@ "file_type": "code", "source_file": "main/app/prometheus/vector.py", "source_location": "L1", - "community": 13, + "community": 104, "norm_label": "vector.py", "id": "main_app_prometheus_vector_py" }, @@ -11081,7 +14366,7 @@ "file_type": "code", "source_file": "main/app/prometheus/vector.py", "source_location": "L10", - "community": 13, + "community": 104, "norm_label": "normalizerows()", "id": "prometheus_vector_normalizerows" }, @@ -11090,7 +14375,7 @@ "file_type": "code", "source_file": "main/app/prometheus/vector.py", "source_location": "L15", - "community": 13, + "community": 53, "norm_label": "embed()", "id": "prometheus_vector_embed" }, @@ -11099,7 +14384,7 @@ "file_type": "code", "source_file": "main/app/prometheus/vector.py", "source_location": "L19", - "community": 13, + "community": 104, "norm_label": "decodeembeddings()", "id": "prometheus_vector_decodeembeddings" }, @@ -11108,7 +14393,7 @@ "file_type": "code", "source_file": "main/app/prometheus/vector.py", "source_location": "L41", - "community": 13, + "community": 104, "norm_label": "batchcosinesimilarity()", "id": "prometheus_vector_batchcosinesimilarity" }, @@ -11126,7 +14411,7 @@ "file_type": "code", "source_file": "main/app/prometheus/vector.py", "source_location": "L55", - "community": 13, + "community": 104, "norm_label": "tovectorstring()", "id": "prometheus_vector_tovectorstring" }, @@ -11135,7 +14420,7 @@ "file_type": "code", "source_file": "main/app/prometheus/vector.py", "source_location": "L59", - "community": 13, + "community": 104, "norm_label": "fromvectorstring()", "id": "prometheus_vector_fromvectorstring" }, @@ -11306,7 +14591,7 @@ "file_type": "code", "source_file": "main/service/prometheus_service.py", "source_location": "L23", - "community": 570, + "community": 518, "norm_label": "memorymaintenance()", "id": "service_prometheus_service_memorymaintenance" }, @@ -12044,7 +15329,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L450", - "community": 80, + "community": 53, "norm_label": "counttokenscached()", "id": "prometheus_memory_counttokenscached" }, @@ -12053,7 +15338,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/sync_cache.py", "source_location": "L13", - "community": 511, + "community": 82, "norm_label": "sync_cache()", "id": "stocks_api_sync_cache_sync_cache" }, @@ -12071,7 +15356,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L10", - "community": 12, + "community": 84, "norm_label": "ensurefastmcp()", "id": "prometheus_mcp_ensurefastmcp" }, @@ -12116,7 +15401,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L333", - "community": 13, + "community": 53, "norm_label": "searchasync()", "id": "prometheus_memory_searchasync" }, @@ -12143,7 +15428,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L50", - "community": 126, + "community": 528, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_50" }, @@ -12152,7 +15437,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L91", - "community": 487, + "community": 546, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", "id": "prometheus_tools_rationale_91" }, @@ -12161,7 +15446,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L112", - "community": 208, + "community": 546, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_112" }, @@ -12170,7 +15455,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L126", - "community": 529, + "community": 525, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", "id": "prometheus_tools_rationale_126" }, @@ -12179,7 +15464,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L142", - "community": 523, + "community": 571, "norm_label": "list files in the workspace directory. args: path: directory pat", "id": "prometheus_tools_rationale_142" }, @@ -12188,7 +15473,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L155", - "community": 529, + "community": 525, "norm_label": "get a download link for a workspace file to share with the user. use this", "id": "prometheus_tools_rationale_155" }, @@ -12233,7 +15518,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L49", - "community": 126, + "community": 528, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_49" }, @@ -12242,7 +15527,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L90", - "community": 487, + "community": 546, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", "id": "prometheus_tools_rationale_90" }, @@ -12251,7 +15536,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L111", - "community": 208, + "community": 573, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_111" }, @@ -12260,7 +15545,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L125", - "community": 529, + "community": 525, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", "id": "prometheus_tools_rationale_125" }, @@ -12278,7 +15563,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L154", - "community": 523, + "community": 525, "norm_label": "get a download link for a workspace file to share with the user. use this", "id": "prometheus_tools_rationale_154" }, @@ -12296,7 +15581,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L23", - "community": 169, + "community": 157, "norm_label": "jsonbytesresponse", "id": "controller_stocksapi_controller_jsonbytesresponse" }, @@ -12305,7 +15590,7 @@ "file_type": "code", "source_file": "", "source_location": "", - "community": 169, + "community": 157, "norm_label": "fastapiresponse", "id": "fastapiresponse" }, @@ -12314,55 +15599,10 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L26", - "community": 169, + "community": 157, "norm_label": ".render()", "id": "controller_stocksapi_controller_jsonbytesresponse_render" }, - { - "label": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L47", - "community": 54, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_47" - }, - { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L103", - "community": 197, - "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", - "id": "controller_stocksapi_controller_rationale_103" - }, - { - "label": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L168", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_168" - }, - { - "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L236", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_236" - }, - { - "label": "Get real-time price quotation for a single Brazilian B3 stock. Returns th", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L290", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_290" - }, { "label": "Load historical/fundamental field names via STOCKS_API /fields endpoint, caching", "file_type": "rationale", @@ -12431,7 +15671,7 @@ "file_type": "code", "source_file": "bench/bench_memory_vector.py", "source_location": "L1", - "community": 13, + "community": 104, "norm_label": "bench_memory_vector.py", "id": "bench_bench_memory_vector_py" }, @@ -12440,7 +15680,7 @@ "file_type": "code", "source_file": "bench/bench_memory_vector.py", "source_location": "L14", - "community": 13, + "community": 104, "norm_label": "benchonce()", "id": "bench_bench_memory_vector_benchonce" }, @@ -12449,7 +15689,7 @@ "file_type": "code", "source_file": "bench/bench_memory_vector.py", "source_location": "L41", - "community": 13, + "community": 104, "norm_label": "main()", "id": "bench_bench_memory_vector_main" }, @@ -13151,7 +16391,7 @@ "file_type": "rationale", "source_file": "main/service/scraper_service.py", "source_location": "L23", - "community": 562, + "community": 590, "norm_label": "p5: register the scraper cron jobs on the shared scheduler. kept in this", "id": "service_scraper_service_rationale_23" }, @@ -14348,7 +17588,7 @@ "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L36", - "community": 54, + "community": 222, "norm_label": "discover available field names before querying /historical or /fundamental.", "id": "controller_stocksapi_controller_rationale_36" }, @@ -14393,7 +17633,7 @@ "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L40", - "community": 54, + "community": 222, "norm_label": "discover available field names before querying /historical or /fundamental.", "id": "controller_stocksapi_controller_rationale_40" }, @@ -14555,7 +17795,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L54", - "community": 126, + "community": 528, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_54" }, @@ -14564,7 +17804,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L92", - "community": 487, + "community": 546, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", "id": "prometheus_tools_rationale_92" }, @@ -14573,7 +17813,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L113", - "community": 208, + "community": 573, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_113" }, @@ -14582,7 +17822,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L127", - "community": 529, + "community": 525, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", "id": "prometheus_tools_rationale_127" }, @@ -14591,7 +17831,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L143", - "community": 529, + "community": 525, "norm_label": "list files in the workspace directory. args: path: directory pat", "id": "prometheus_tools_rationale_143" }, @@ -14627,7 +17867,7 @@ "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L48", - "community": 54, + "community": 222, "norm_label": "discover available field names before querying /historical or /fundamental.", "id": "controller_stocksapi_controller_rationale_48" }, @@ -14672,7 +17912,7 @@ "file_type": "code", "source_file": "main/utils/service_manager.py", "source_location": "L15", - "community": 536, + "community": 45, "norm_label": "servicemanager", "id": "utils_service_manager_servicemanager" }, @@ -14703,15 +17943,6 @@ "norm_label": "_forward()", "id": "controller_prometheus_controller_forward" }, - { - "label": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L167", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_167" - }, { "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", "file_type": "rationale", @@ -14825,7 +18056,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L122", - "community": 529, + "community": 525, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", "id": "prometheus_tools_rationale_122" }, @@ -14834,7 +18065,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L135", - "community": 208, + "community": 525, "norm_label": "list files in the workspace directory. args: path: directory pat", "id": "prometheus_tools_rationale_135" }, @@ -15113,7 +18344,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/key.py", "source_location": "L61", - "community": 500, + "community": 26, "norm_label": "createkey()", "id": "stocks_api_key_createkey" }, @@ -15131,7 +18362,7 @@ "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L24", - "community": 169, + "community": 157, "norm_label": "sends pre-serialized json bytes without re-encoding (cache-friendly).", "id": "controller_stocksapi_controller_rationale_24" }, @@ -15140,7 +18371,7 @@ "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L49", - "community": 54, + "community": 222, "norm_label": "discover available field names before querying /historical or /fundamental.", "id": "controller_stocksapi_controller_rationale_49" }, @@ -15185,7 +18416,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L1", - "community": 215, + "community": 596, "norm_label": "response_cache.py", "id": "main_app_stocks_api_response_cache_py" }, @@ -15194,7 +18425,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L19", - "community": 215, + "community": 596, "norm_label": "responsecache", "id": "stocks_api_response_cache_responsecache" }, @@ -15203,7 +18434,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L20", - "community": 215, + "community": 596, "norm_label": ".__init__()", "id": "stocks_api_response_cache_responsecache_init" }, @@ -15212,7 +18443,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L29", - "community": 215, + "community": 596, "norm_label": ".makekey()", "id": "stocks_api_response_cache_responsecache_makekey" }, @@ -15221,7 +18452,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L34", - "community": 215, + "community": 596, "norm_label": ".get()", "id": "stocks_api_response_cache_responsecache_get" }, @@ -15230,7 +18461,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L51", - "community": 215, + "community": 54, "norm_label": ".set()", "id": "stocks_api_response_cache_responsecache_set" }, @@ -15275,7 +18506,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L323", - "community": 500, + "community": 157, "norm_label": "generatekey()", "id": "controller_stocksapi_controller_generatekey" }, @@ -15284,7 +18515,7 @@ "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L30", - "community": 54, + "community": 222, "norm_label": "discover available field names before querying /historical or /fundamental.", "id": "controller_stocksapi_controller_rationale_30" }, @@ -16022,7 +19253,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L38", - "community": 12, + "community": 84, "norm_label": ".__new__()", "id": "prometheus_mcp_mcpclientpool_new" }, @@ -16076,7 +19307,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L1", - "community": 574, + "community": 54, "norm_label": "compressor.py", "id": "main_app_stocks_api_compressor_py" }, @@ -16085,7 +19316,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L25", - "community": 574, + "community": 54, "norm_label": "getabbr()", "id": "stocks_api_compressor_getabbr" }, @@ -16094,7 +19325,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L36", - "community": 574, + "community": 54, "norm_label": "getnest()", "id": "stocks_api_compressor_getnest" }, @@ -16103,7 +19334,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L46", - "community": 574, + "community": 82, "norm_label": "rebuildabbrevs()", "id": "stocks_api_compressor_rebuildabbrevs" }, @@ -16112,7 +19343,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L51", - "community": 574, + "community": 54, "norm_label": "walk()", "id": "stocks_api_compressor_walk" }, @@ -16121,7 +19352,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L59", - "community": 574, + "community": 54, "norm_label": "compactvalue()", "id": "stocks_api_compressor_compactvalue" }, @@ -16130,7 +19361,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L80", - "community": 574, + "community": 54, "norm_label": "tocolumnar()", "id": "stocks_api_compressor_tocolumnar" }, @@ -16139,7 +19370,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L89", - "community": 574, + "community": 54, "norm_label": "fixheaders()", "id": "stocks_api_compressor_fixheaders" }, @@ -16148,7 +19379,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L98", - "community": 574, + "community": 54, "norm_label": "compactrow()", "id": "stocks_api_compressor_compactrow" }, @@ -16157,7 +19388,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L126", - "community": 574, + "community": 54, "norm_label": "compactcotations()", "id": "stocks_api_compressor_compactcotations" }, @@ -16166,7 +19397,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L160", - "community": 574, + "community": 54, "norm_label": "compressresponse()", "id": "stocks_api_compressor_compressresponse" }, @@ -17048,7 +20279,7 @@ "file_type": "code", "source_file": "main/app/prometheus/state.py", "source_location": "L14", - "community": 215, + "community": 54, "norm_label": ".set()", "id": "prometheus_state_harnessstate_set" }, @@ -17102,7 +20333,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L89", - "community": 162, + "community": 16, "norm_label": "get_state()", "id": "prometheus_tools_get_state" }, @@ -17111,7 +20342,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L104", - "community": 487, + "community": 546, "norm_label": "set_state()", "id": "prometheus_tools_set_state" }, @@ -17120,7 +20351,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L105", - "community": 487, + "community": 546, "norm_label": "store a value in the harness state for this session. use this to save inter", "id": "prometheus_tools_rationale_105" }, @@ -17129,7 +20360,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L123", - "community": 487, + "community": 546, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", "id": "prometheus_tools_rationale_123" }, @@ -17138,7 +20369,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L144", - "community": 208, + "community": 525, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_144" }, @@ -17156,7 +20387,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L16", - "community": 12, + "community": 84, "norm_label": "_parseservers()", "id": "prometheus_mcp_parseservers" }, @@ -17327,7 +20558,7 @@ "file_type": "code", "source_file": "main/utils/connectivity.py", "source_location": "L13", - "community": 541, + "community": 59, "norm_label": "checksingledb()", "id": "utils_connectivity_checksingledb" }, @@ -17435,7 +20666,7 @@ "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L27", - "community": 54, + "community": 222, "norm_label": "discover available field names before querying /historical or /fundamental.", "id": "controller_stocksapi_controller_rationale_27" }, @@ -18515,7 +21746,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L44", - "community": 126, + "community": 528, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_44" }, @@ -18524,7 +21755,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L81", - "community": 162, + "community": 16, "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", "id": "prometheus_tools_rationale_81" }, @@ -18533,7 +21764,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L96", - "community": 487, + "community": 546, "norm_label": "store a value in the harness state for this session. use this to save inter", "id": "prometheus_tools_rationale_96" }, @@ -18542,7 +21773,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L114", - "community": 487, + "community": 546, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", "id": "prometheus_tools_rationale_114" }, @@ -18551,7 +21782,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L146", - "community": 529, + "community": 525, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", "id": "prometheus_tools_rationale_146" }, @@ -19253,7 +22484,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/util.py", "source_location": "L27", - "community": 215, + "community": 73, "norm_label": "_parse_date()", "id": "stocks_api_util_parse_date" }, @@ -19262,7 +22493,7 @@ "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L26", - "community": 54, + "community": 222, "norm_label": "discover available field names before querying /historical or /fundamental.", "id": "controller_stocksapi_controller_rationale_26" }, @@ -19469,7 +22700,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/util.py", "source_location": "L39", - "community": 215, + "community": 73, "norm_label": "parsedatestart()", "id": "stocks_api_util_parsedatestart" }, @@ -19478,7 +22709,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/util.py", "source_location": "L43", - "community": 215, + "community": 73, "norm_label": "parsedateend()", "id": "stocks_api_util_parsedateend" }, @@ -24797,7 +28028,7 @@ "file_type": "code", "source_file": "tests/conftest.py", "source_location": "L81", - "community": 105, + "community": 251, "norm_label": "stocks_http_client()", "id": "tests_conftest_stocks_http_client" }, @@ -24806,7 +28037,7 @@ "file_type": "code", "source_file": "tests/conftest.py", "source_location": "L106", - "community": 105, + "community": 251, "norm_label": "client()", "id": "tests_conftest_client" }, @@ -24833,7 +28064,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L82", - "community": 105, + "community": 251, "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", "id": "tests_conftest_rationale_82" }, @@ -24842,7 +28073,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L107", - "community": 105, + "community": 251, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_107" }, @@ -25166,7 +28397,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L1", - "community": 26, + "community": 504, "norm_label": "test_api_key_quota_atomic.py", "id": "tests_test_api_key_quota_atomic_py" }, @@ -25175,7 +28406,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L18", - "community": 26, + "community": 504, "norm_label": "samplekeydata()", "id": "tests_test_api_key_quota_atomic_samplekeydata" }, @@ -25229,7 +28460,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L150", - "community": 26, + "community": 572, "norm_label": ".test_invalid_api_key_returns_zero_rows()", "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_invalid_api_key_returns_zero_rows" }, @@ -25238,7 +28469,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L164", - "community": 26, + "community": 572, "norm_label": ".test_multiple_keys_independent_quotas()", "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_multiple_keys_independent_quotas" }, @@ -25310,7 +28541,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L1", - "community": 26, + "community": 504, "norm_label": "tests for atomic api key quota enforcement (race condition fix). verifies tha", "id": "tests_test_api_key_quota_atomic_rationale_1" }, @@ -25319,7 +28550,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L19", - "community": 26, + "community": 504, "norm_label": "sample api key data for tests.", "id": "tests_test_api_key_quota_atomic_rationale_19" }, @@ -25373,7 +28604,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L151", - "community": 26, + "community": 572, "norm_label": "test that invalid api key returns zero rows affected.", "id": "tests_test_api_key_quota_atomic_rationale_151" }, @@ -25382,7 +28613,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L165", - "community": 26, + "community": 572, "norm_label": "test that multiple api keys have independent quotas.", "id": "tests_test_api_key_quota_atomic_rationale_165" }, @@ -25643,7 +28874,7 @@ "file_type": "code", "source_file": "tests/test_config.py", "source_location": "L1", - "community": 251, + "community": 102, "norm_label": "test_config.py", "id": "tests_test_config_py" }, @@ -25706,7 +28937,7 @@ "file_type": "code", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L8", - "community": 596, + "community": 59, "norm_label": "testcheckmysqlconnection", "id": "tests_test_connectivity_coverage_testcheckmysqlconnection" }, @@ -25796,7 +29027,7 @@ "file_type": "code", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L114", - "community": 595, + "community": 59, "norm_label": "testcheckserviceconnection", "id": "tests_test_connectivity_coverage_testcheckserviceconnection" }, @@ -25886,7 +29117,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L9", - "community": 596, + "community": 59, "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", "id": "tests_test_connectivity_coverage_rationale_9" }, @@ -25895,7 +29126,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L115", - "community": 595, + "community": 59, "norm_label": "checkserviceconnection \u2014 success, not found, errors.", "id": "tests_test_connectivity_coverage_rationale_115" }, @@ -26003,7 +29234,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L146", - "community": 120, + "community": 45, "norm_label": "testregisterendpoint", "id": "tests_test_controllers_coverage_testregisterendpoint" }, @@ -26048,7 +29279,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L215", - "community": 120, + "community": 45, "norm_label": "testloginendpoint", "id": "tests_test_controllers_coverage_testloginendpoint" }, @@ -26075,7 +29306,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L257", - "community": 120, + "community": 45, "norm_label": "testlogoutendpoint", "id": "tests_test_controllers_coverage_testlogoutendpoint" }, @@ -26165,7 +29396,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L390", - "community": 120, + "community": 45, "norm_label": "testgooglecallback", "id": "tests_test_controllers_coverage_testgooglecallback" }, @@ -26219,7 +29450,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L527", - "community": 498, + "community": 45, "norm_label": "testuserhealth", "id": "tests_test_controllers_coverage_testuserhealth" }, @@ -26228,7 +29459,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L530", - "community": 498, + "community": 45, "norm_label": ".test_health()", "id": "tests_test_controllers_coverage_testuserhealth_test_health" }, @@ -26327,7 +29558,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L614", - "community": 178, + "community": 541, "norm_label": "testgetsessions", "id": "tests_test_controllers_coverage_testgetsessions" }, @@ -26336,7 +29567,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L617", - "community": 178, + "community": 541, "norm_label": ".test_get_sessions()", "id": "tests_test_controllers_coverage_testgetsessions_test_get_sessions" }, @@ -26372,7 +29603,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L727", - "community": 104, + "community": 120, "norm_label": "testrevokesession", "id": "tests_test_controllers_coverage_testrevokesession" }, @@ -26381,7 +29612,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L730", - "community": 104, + "community": 120, "norm_label": ".test_revoke_session_success()", "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_success" }, @@ -26390,7 +29621,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L757", - "community": 104, + "community": 120, "norm_label": ".test_revoke_session_not_found()", "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_not_found" }, @@ -26399,7 +29630,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L779", - "community": 104, + "community": 120, "norm_label": ".test_revoke_session_failure()", "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_failure" }, @@ -26426,7 +29657,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L835", - "community": 498, + "community": 45, "norm_label": "testprometheushealth", "id": "tests_test_controllers_coverage_testprometheushealth" }, @@ -26435,7 +29666,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L838", - "community": 498, + "community": 45, "norm_label": ".test_health()", "id": "tests_test_controllers_coverage_testprometheushealth_test_health" }, @@ -26516,7 +29747,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L915", - "community": 104, + "community": 256, "norm_label": "testprometheusgethistory", "id": "tests_test_controllers_coverage_testprometheusgethistory" }, @@ -26525,7 +29756,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L918", - "community": 104, + "community": 256, "norm_label": ".test_get_history_found()", "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" }, @@ -26534,7 +29765,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L962", - "community": 104, + "community": 256, "norm_label": ".test_get_history_not_found()", "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" }, @@ -26543,7 +29774,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L997", - "community": 231, + "community": 99, "norm_label": "testprometheusdeletesession", "id": "tests_test_controllers_coverage_testprometheusdeletesession" }, @@ -26552,7 +29783,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1000", - "community": 231, + "community": 99, "norm_label": ".test_delete_session_success()", "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_success" }, @@ -26561,7 +29792,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1010", - "community": 231, + "community": 99, "norm_label": ".test_delete_session_not_found()", "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_not_found" }, @@ -26570,7 +29801,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1020", - "community": 16, + "community": 148, "norm_label": "testprometheuschat", "id": "tests_test_controllers_coverage_testprometheuschat" }, @@ -26579,7 +29810,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1023", - "community": 16, + "community": 99, "norm_label": ".test_chat_new_session()", "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_new_session" }, @@ -26588,7 +29819,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1042", - "community": 16, + "community": 148, "norm_label": ".test_chat_existing_session_verified()", "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_verified" }, @@ -26597,7 +29828,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1085", - "community": 16, + "community": 148, "norm_label": ".test_chat_existing_session_not_owner()", "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" }, @@ -26606,7 +29837,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1121", - "community": 16, + "community": 148, "norm_label": ".test_chat_generic_exception()", "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_generic_exception" }, @@ -26615,7 +29846,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1144", - "community": 498, + "community": 511, "norm_label": "teststocksapihealth", "id": "tests_test_controllers_coverage_teststocksapihealth" }, @@ -26624,7 +29855,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1147", - "community": 498, + "community": 511, "norm_label": ".test_health()", "id": "tests_test_controllers_coverage_teststocksapihealth_test_health" }, @@ -26705,7 +29936,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1229", - "community": 563, + "community": 578, "norm_label": "testaddroletouser", "id": "tests_test_controllers_coverage_testaddroletouser" }, @@ -26714,7 +29945,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1232", - "community": 564, + "community": 584, "norm_label": ".test_add_role_success()", "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_success" }, @@ -26723,7 +29954,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1249", - "community": 568, + "community": 588, "norm_label": ".test_add_role_already_has_role()", "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_already_has_role" }, @@ -26732,7 +29963,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1263", - "community": 528, + "community": 568, "norm_label": ".test_add_role_user_not_found()", "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_user_not_found" }, @@ -26768,7 +29999,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1307", - "community": 569, + "community": 592, "norm_label": ".test_get_current_user_session_revoked()", "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_session_revoked" }, @@ -26777,7 +30008,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1323", - "community": 546, + "community": 535, "norm_label": ".test_get_current_user_not_found()", "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_not_found" }, @@ -26786,7 +30017,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1340", - "community": 560, + "community": 544, "norm_label": ".test_get_current_user_generic_exception()", "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_generic_exception" }, @@ -26795,7 +30026,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1357", - "community": 561, + "community": 560, "norm_label": ".test_get_current_user_no_session_id()", "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_no_session_id" }, @@ -26813,7 +30044,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1384", - "community": 43, + "community": 45, "norm_label": ".test_empty_password_raises()", "id": "tests_test_controllers_coverage_testhashpasswordempty_test_empty_password_raises" }, @@ -26867,7 +30098,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1441", - "community": 498, + "community": 45, "norm_label": "testmanagerinit", "id": "tests_test_controllers_coverage_testmanagerinit" }, @@ -26876,7 +30107,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1444", - "community": 498, + "community": 45, "norm_label": ".test_manager_init()", "id": "tests_test_controllers_coverage_testmanagerinit_test_manager_init" }, @@ -26948,7 +30179,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L147", - "community": 120, + "community": 45, "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", "id": "tests_test_controllers_coverage_rationale_147" }, @@ -26993,7 +30224,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L216", - "community": 120, + "community": 45, "norm_label": "covers lines 87-93, 102: login success and failure paths.", "id": "tests_test_controllers_coverage_rationale_216" }, @@ -27020,7 +30251,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L258", - "community": 120, + "community": 45, "norm_label": "covers lines 107, 109-130, 133: logout token extraction and revocation.", "id": "tests_test_controllers_coverage_rationale_258" }, @@ -27038,7 +30269,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L281", - "community": 120, + "community": 45, "norm_label": "covers lines 111-113: token extracted from authorization bearer header.", "id": "tests_test_controllers_coverage_rationale_281" }, @@ -27110,7 +30341,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L391", - "community": 120, + "community": 45, "norm_label": "covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googlecallba", "id": "tests_test_controllers_coverage_rationale_391" }, @@ -27164,7 +30395,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L528", - "community": 498, + "community": 45, "norm_label": "covers line 19: get /user/health.", "id": "tests_test_controllers_coverage_rationale_528" }, @@ -27200,7 +30431,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L615", - "community": 178, + "community": 541, "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", "id": "tests_test_controllers_coverage_rationale_615" }, @@ -27209,7 +30440,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L618", - "community": 178, + "community": 541, "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", "id": "tests_test_controllers_coverage_rationale_618" }, @@ -27245,7 +30476,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L728", - "community": 104, + "community": 120, "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_728" }, @@ -27254,7 +30485,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L731", - "community": 104, + "community": 120, "norm_label": "covers lines 126, 131, 135-136.", "id": "tests_test_controllers_coverage_rationale_731" }, @@ -27263,7 +30494,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L758", - "community": 104, + "community": 120, "norm_label": "covers lines 127-129: session not found.", "id": "tests_test_controllers_coverage_rationale_758" }, @@ -27272,7 +30503,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L780", - "community": 104, + "community": 120, "norm_label": "covers lines 132-133: revokesession returns false.", "id": "tests_test_controllers_coverage_rationale_780" }, @@ -27299,7 +30530,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L836", - "community": 498, + "community": 45, "norm_label": "covers line 24: get /prometheus/health.", "id": "tests_test_controllers_coverage_rationale_836" }, @@ -27362,7 +30593,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L916", - "community": 104, + "community": 256, "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_916" }, @@ -27371,7 +30602,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L919", - "community": 104, + "community": 256, "norm_label": "covers lines 77, 86: session found with history.", "id": "tests_test_controllers_coverage_rationale_919" }, @@ -27380,7 +30611,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L963", - "community": 104, + "community": 256, "norm_label": "covers lines 83-84: session not found.", "id": "tests_test_controllers_coverage_rationale_963" }, @@ -27389,7 +30620,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L998", - "community": 231, + "community": 99, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_998" }, @@ -27398,7 +30629,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1001", - "community": 231, + "community": 99, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_1001" }, @@ -27407,7 +30638,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1011", - "community": 231, + "community": 99, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1011" }, @@ -27416,7 +30647,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1021", - "community": 16, + "community": 148, "norm_label": "covers lines 109-136: post /prometheus/chat/stream (sse).", "id": "tests_test_controllers_coverage_rationale_1021" }, @@ -27425,7 +30656,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1024", - "community": 16, + "community": 99, "norm_label": "covers lines 118-119: sessionid is none, new session created.", "id": "tests_test_controllers_coverage_rationale_1024" }, @@ -27434,7 +30665,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1043", - "community": 16, + "community": 148, "norm_label": "covers lines 120-121: existing session with verified ownership.", "id": "tests_test_controllers_coverage_rationale_1043" }, @@ -27443,7 +30674,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1086", - "community": 16, + "community": 148, "norm_label": "covers lines 120-121: session ownership check fails.", "id": "tests_test_controllers_coverage_rationale_1086" }, @@ -27452,7 +30683,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1122", - "community": 16, + "community": 148, "norm_label": "generic exception in chat propagates via sse error event.", "id": "tests_test_controllers_coverage_rationale_1122" }, @@ -27461,7 +30692,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1145", - "community": 498, + "community": 511, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1145" }, @@ -27524,7 +30755,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1230", - "community": 563, + "community": 578, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1230" }, @@ -27533,7 +30764,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1233", - "community": 564, + "community": 584, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1233" }, @@ -27542,7 +30773,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1250", - "community": 568, + "community": 588, "norm_label": "covers line 27: user already has the role.", "id": "tests_test_controllers_coverage_rationale_1250" }, @@ -27551,7 +30782,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1264", - "community": 528, + "community": 568, "norm_label": "covers lines 19-20: user not found raises 404.", "id": "tests_test_controllers_coverage_rationale_1264" }, @@ -27578,7 +30809,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1308", - "community": 569, + "community": 592, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1308" }, @@ -27587,7 +30818,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1324", - "community": 546, + "community": 535, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1324" }, @@ -27596,7 +30827,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1341", - "community": 560, + "community": 544, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1341" }, @@ -27605,7 +30836,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1358", - "community": 561, + "community": 560, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1358" }, @@ -27614,7 +30845,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1382", - "community": 45, + "community": 524, "norm_label": "covers line 16: empty password raises valueerror.", "id": "tests_test_controllers_coverage_rationale_1382" }, @@ -27668,7 +30899,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1442", - "community": 498, + "community": 45, "norm_label": "covers line 13: usermanager.__init__.", "id": "tests_test_controllers_coverage_rationale_1442" }, @@ -28244,7 +31475,7 @@ "file_type": "code", "source_file": "tests/test_error_handlers.py", "source_location": "L25", - "community": 104, + "community": 33, "norm_label": "app()", "id": "tests_test_error_handlers_app" }, @@ -28532,7 +31763,7 @@ "file_type": "code", "source_file": "tests/test_harness_state.py", "source_location": "L1", - "community": 251, + "community": 138, "norm_label": "test_harness_state.py", "id": "tests_test_harness_state_py" }, @@ -28640,7 +31871,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L1", - "community": 186, + "community": 138, "norm_label": "test_http_session_coverage.py", "id": "tests_test_http_session_coverage_py" }, @@ -28649,7 +31880,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L8", - "community": 186, + "community": 138, "norm_label": "testgetsession", "id": "tests_test_http_session_coverage_testgetsession" }, @@ -28658,7 +31889,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L9", - "community": 186, + "community": 138, "norm_label": ".test_returns_same_session()", "id": "tests_test_http_session_coverage_testgetsession_test_returns_same_session" }, @@ -28667,7 +31898,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L16", - "community": 186, + "community": 138, "norm_label": ".test_returns_requests_session()", "id": "tests_test_http_session_coverage_testgetsession_test_returns_requests_session" }, @@ -28676,7 +31907,7 @@ "file_type": "rationale", "source_file": "tests/test_http_session_coverage.py", "source_location": "L1", - "community": 186, + "community": 138, "norm_label": "tests for main/utils/http_session.py \u2014 covers all branches.", "id": "tests_test_http_session_coverage_rationale_1" }, @@ -28982,7 +32213,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L1", - "community": 188, + "community": 122, "norm_label": "test_logging_config_coverage.py", "id": "tests_test_logging_config_coverage_py" }, @@ -28991,7 +32222,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L8", - "community": 188, + "community": 122, "norm_label": "testdiscordhandleremit", "id": "tests_test_logging_config_coverage_testdiscordhandleremit" }, @@ -29000,7 +32231,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L9", - "community": 188, + "community": 122, "norm_label": "._make_handler()", "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_handler" }, @@ -29009,7 +32240,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L14", - "community": 188, + "community": 122, "norm_label": "._make_record()", "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_record" }, @@ -29018,7 +32249,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L27", - "community": 188, + "community": 122, "norm_label": "test_discord_disabled()", "id": "tests_test_logging_config_coverage_test_discord_disabled" }, @@ -29027,7 +32258,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L35", - "community": 188, + "community": 122, "norm_label": "test_discord_no_webhook()", "id": "tests_test_logging_config_coverage_test_discord_no_webhook" }, @@ -29036,7 +32267,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L43", - "community": 188, + "community": 122, "norm_label": "test_level_below_error()", "id": "tests_test_logging_config_coverage_test_level_below_error" }, @@ -29045,7 +32276,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L52", - "community": 188, + "community": 122, "norm_label": "test_submit_called_on_error()", "id": "tests_test_logging_config_coverage_test_submit_called_on_error" }, @@ -29054,7 +32285,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L62", - "community": 188, + "community": 122, "norm_label": "test_message_truncation()", "id": "tests_test_logging_config_coverage_test_message_truncation" }, @@ -29063,7 +32294,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L77", - "community": 188, + "community": 122, "norm_label": "test_exception_in_submit()", "id": "tests_test_logging_config_coverage_test_exception_in_submit" }, @@ -29072,7 +32303,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L88", - "community": 188, + "community": 122, "norm_label": "test_with_exception_info()", "id": "tests_test_logging_config_coverage_test_with_exception_info" }, @@ -29081,7 +32312,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L103", - "community": 188, + "community": 122, "norm_label": "testsetuplogging", "id": "tests_test_logging_config_coverage_testsetuplogging" }, @@ -29108,7 +32339,7 @@ "file_type": "rationale", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L1", - "community": 188, + "community": 122, "norm_label": "tests for main/utils/logging_config.py \u2014 covers discordhandler branches.", "id": "tests_test_logging_config_coverage_rationale_1" }, @@ -29369,7 +32600,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L84", - "community": 140, + "community": 518, "norm_label": "testarchive", "id": "tests_test_memory_maintenance_testarchive" }, @@ -29378,7 +32609,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L85", - "community": 544, + "community": 518, "norm_label": ".test_dead_memory_archived()", "id": "tests_test_memory_maintenance_testarchive_test_dead_memory_archived" }, @@ -29387,7 +32618,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L92", - "community": 573, + "community": 518, "norm_label": ".test_low_score_but_recent_not_archived()", "id": "tests_test_memory_maintenance_testarchive_test_low_score_but_recent_not_archived" }, @@ -29396,7 +32627,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L99", - "community": 539, + "community": 518, "norm_label": ".test_zero_access_but_high_score_not_archived()", "id": "tests_test_memory_maintenance_testarchive_test_zero_access_but_high_score_not_archived" }, @@ -29405,7 +32636,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L106", - "community": 570, + "community": 518, "norm_label": ".test_accessed_memory_not_archived()", "id": "tests_test_memory_maintenance_testarchive_test_accessed_memory_not_archived" }, @@ -29414,7 +32645,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L113", - "community": 570, + "community": 518, "norm_label": ".test_already_archived_not_double_archived()", "id": "tests_test_memory_maintenance_testarchive_test_already_archived_not_double_archived" }, @@ -29495,7 +32726,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L171", - "community": 570, + "community": 518, "norm_label": ".test_no_memories_does_not_crash()", "id": "tests_test_memory_maintenance_testemptydatabase_test_no_memories_does_not_crash" }, @@ -29531,7 +32762,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L86", - "community": 544, + "community": 518, "norm_label": "score below threshold + accesscount=0 + 90+ days \u2192 archived.", "id": "tests_test_memory_maintenance_rationale_86" }, @@ -29540,7 +32771,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L93", - "community": 573, + "community": 518, "norm_label": "low score but accessed recently \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_93" }, @@ -29549,7 +32780,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L100", - "community": 539, + "community": 518, "norm_label": "zero access but score still above threshold \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_100" }, @@ -29558,7 +32789,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L107", - "community": 570, + "community": 518, "norm_label": "even with low score, if accessed \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_107" }, @@ -29567,7 +32798,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L114", - "community": 570, + "community": 518, "norm_label": "already archived memories are skipped.", "id": "tests_test_memory_maintenance_rationale_114" }, @@ -29846,7 +33077,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L23", - "community": 584, + "community": 561, "norm_label": "testmemorytoolfunctions", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions" }, @@ -29855,7 +33086,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L26", - "community": 584, + "community": 561, "norm_label": ".test_search_memory_has_docstring()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_has_docstring" }, @@ -29864,7 +33095,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L30", - "community": 584, + "community": 561, "norm_label": ".test_save_memory_has_docstring()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_has_docstring" }, @@ -29873,7 +33104,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L34", - "community": 584, + "community": 561, "norm_label": ".test_search_memory_signature()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_signature" }, @@ -29882,7 +33113,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L39", - "community": 584, + "community": 561, "norm_label": ".test_save_memory_signature()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_signature" }, @@ -29891,7 +33122,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L46", - "community": 584, + "community": 561, "norm_label": ".test_search_memory_has_type_hints()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_has_type_hints" }, @@ -29900,7 +33131,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L50", - "community": 584, + "community": 561, "norm_label": ".test_save_memory_has_type_hints()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_has_type_hints" }, @@ -29909,7 +33140,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L54", - "community": 584, + "community": 561, "norm_label": ".test_memory_tools_is_list_of_callables()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_memory_tools_is_list_of_callables" }, @@ -29918,7 +33149,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L60", - "community": 215, + "community": 54, "norm_label": ".test_memory_tool_names_unchanged()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_memory_tool_names_unchanged" }, @@ -29927,7 +33158,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L64", - "community": 215, + "community": 54, "norm_label": "testtoolregistry", "id": "tests_test_memory_tools_wiring_testtoolregistry" }, @@ -29936,7 +33167,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L67", - "community": 215, + "community": 54, "norm_label": ".test_registry_contains_memory_tools()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_contains_memory_tools" }, @@ -29945,7 +33176,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L71", - "community": 215, + "community": 54, "norm_label": ".test_registry_values_are_callable()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_values_are_callable" }, @@ -29954,7 +33185,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L75", - "community": 215, + "community": 54, "norm_label": ".test_registry_matches_tool_names()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_matches_tool_names" }, @@ -29963,7 +33194,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L79", - "community": 49, + "community": 575, "norm_label": "testmakechatincludesmemorytools", "id": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" }, @@ -29981,7 +33212,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L112", - "community": 575, + "community": 589, "norm_label": "testdispatchroutesmemorytools", "id": "tests_test_memory_tools_wiring_testdispatchroutesmemorytools" }, @@ -30026,7 +33257,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L24", - "community": 584, + "community": 561, "norm_label": "verify the actual async tool functions have correct signatures.", "id": "tests_test_memory_tools_wiring_rationale_24" }, @@ -30035,7 +33266,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L65", - "community": 215, + "community": 54, "norm_label": "tool_registry pattern must work correctly.", "id": "tests_test_memory_tools_wiring_rationale_65" }, @@ -30044,7 +33275,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L80", - "community": 49, + "community": 575, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_80" }, @@ -30053,7 +33284,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L113", - "community": 575, + "community": 589, "norm_label": "dispatchtoolcall must route memory tool names via tool_registry.", "id": "tests_test_memory_tools_wiring_rationale_113" }, @@ -30638,7 +33869,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L39", - "community": 504, + "community": 186, "norm_label": "testinlinepagination", "id": "tests_test_pagination_testinlinepagination" }, @@ -30647,7 +33878,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L40", - "community": 504, + "community": 186, "norm_label": ".test_defaults()", "id": "tests_test_pagination_testinlinepagination_test_defaults" }, @@ -30656,7 +33887,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L48", - "community": 504, + "community": 186, "norm_label": ".test_custom_limit()", "id": "tests_test_pagination_testinlinepagination_test_custom_limit" }, @@ -30665,7 +33896,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L54", - "community": 504, + "community": 186, "norm_label": ".test_custom_offset()", "id": "tests_test_pagination_testinlinepagination_test_custom_offset" }, @@ -30674,7 +33905,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L61", - "community": 504, + "community": 186, "norm_label": ".test_limit_and_offset()", "id": "tests_test_pagination_testinlinepagination_test_limit_and_offset" }, @@ -30683,7 +33914,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L69", - "community": 504, + "community": 186, "norm_label": ".test_limit_exceeds_max_rejected()", "id": "tests_test_pagination_testinlinepagination_test_limit_exceeds_max_rejected" }, @@ -30692,7 +33923,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L73", - "community": 504, + "community": 186, "norm_label": ".test_limit_zero_rejected()", "id": "tests_test_pagination_testinlinepagination_test_limit_zero_rejected" }, @@ -30701,7 +33932,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L77", - "community": 504, + "community": 186, "norm_label": ".test_negative_offset_rejected()", "id": "tests_test_pagination_testinlinepagination_test_negative_offset_rejected" }, @@ -30710,7 +33941,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L81", - "community": 504, + "community": 186, "norm_label": ".test_offset_beyond_total()", "id": "tests_test_pagination_testinlinepagination_test_offset_beyond_total" }, @@ -30719,7 +33950,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L86", - "community": 504, + "community": 186, "norm_label": ".test_limit_equals_max()", "id": "tests_test_pagination_testinlinepagination_test_limit_equals_max" }, @@ -30746,7 +33977,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L26", - "community": 68, + "community": 172, "norm_label": "testprometheusinit", "id": "tests_test_prometheus_auth_coverage_testprometheusinit" }, @@ -30764,7 +33995,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L41", - "community": 68, + "community": 172, "norm_label": "testprometheussendmessage", "id": "tests_test_prometheus_auth_coverage_testprometheussendmessage" }, @@ -30827,7 +34058,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L248", - "community": 68, + "community": 172, "norm_label": ".test_init()", "id": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_init" }, @@ -31322,7 +34553,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L914", - "community": 68, + "community": 172, "norm_label": "testsso", "id": "tests_test_prometheus_auth_coverage_testsso" }, @@ -31358,7 +34589,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L42", - "community": 68, + "community": 172, "norm_label": "cover streammessage in agent.py.", "id": "tests_test_prometheus_auth_coverage_rationale_42" }, @@ -31430,7 +34661,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L915", - "community": 68, + "community": 172, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_915" }, @@ -31457,7 +34688,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L44", - "community": 100, + "community": 530, "norm_label": "testmemorytoolfunctions", "id": "tests_test_prometheus_tools_testmemorytoolfunctions" }, @@ -31466,7 +34697,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L45", - "community": 100, + "community": 530, "norm_label": ".test_search_memory_has_docstring()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_docstring" }, @@ -31475,7 +34706,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L49", - "community": 100, + "community": 530, "norm_label": ".test_save_memory_has_docstring()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_docstring" }, @@ -31484,7 +34715,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L53", - "community": 100, + "community": 530, "norm_label": ".test_search_memory_signature()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_signature" }, @@ -31493,7 +34724,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L59", - "community": 100, + "community": 530, "norm_label": ".test_save_memory_signature()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_signature" }, @@ -31502,7 +34733,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L66", - "community": 100, + "community": 530, "norm_label": ".test_search_memory_has_type_hints()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_type_hints" }, @@ -31511,7 +34742,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L71", - "community": 100, + "community": 530, "norm_label": ".test_save_memory_has_type_hints()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_type_hints" }, @@ -31520,7 +34751,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L77", - "community": 100, + "community": 530, "norm_label": ".test_memory_tools_is_list_of_callables()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tools_is_list_of_callables" }, @@ -31529,7 +34760,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L83", - "community": 100, + "community": 530, "norm_label": ".test_memory_tool_names_unchanged()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tool_names_unchanged" }, @@ -31610,7 +34841,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L118", - "community": 487, + "community": 100, "norm_label": ".test_set_state_no_state_returns_error()", "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_set_state_no_state_returns_error" }, @@ -31619,7 +34850,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L126", - "community": 100, + "community": 585, "norm_label": "testgeminicompatibility", "id": "tests_test_prometheus_tools_testgeminicompatibility" }, @@ -31637,7 +34868,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L135", - "community": 100, + "community": 585, "norm_label": ".test_no_harnessstate_in_any_signature()", "id": "tests_test_prometheus_tools_testgeminicompatibility_test_no_harnessstate_in_any_signature" }, @@ -31646,7 +34877,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L151", - "community": 100, + "community": 54, "norm_label": "testtoolregistry", "id": "tests_test_prometheus_tools_testtoolregistry" }, @@ -31655,7 +34886,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L152", - "community": 100, + "community": 54, "norm_label": ".test_registry_contains_memory_tools()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_contains_memory_tools" }, @@ -31664,7 +34895,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L156", - "community": 100, + "community": 54, "norm_label": ".test_registry_values_are_callable()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_values_are_callable" }, @@ -31673,7 +34904,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L160", - "community": 100, + "community": 54, "norm_label": ".test_registry_matches_tool_names()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_matches_tool_names" }, @@ -31691,7 +34922,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L127", - "community": 100, + "community": 585, "norm_label": "every function in tool_registry must have gemini-safe signatures. custom cl", "id": "tests_test_prometheus_tools_rationale_127" }, @@ -31700,7 +34931,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L136", - "community": 100, + "community": 585, "norm_label": "regression: harnessstate must never leak into tool signatures.", "id": "tests_test_prometheus_tools_rationale_136" }, @@ -31970,7 +35201,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L1", - "community": 475, + "community": 33, "norm_label": "test_request_id.py", "id": "tests_test_request_id_py" }, @@ -31979,7 +35210,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L14", - "community": 475, + "community": 33, "norm_label": "app()", "id": "tests_test_request_id_app" }, @@ -31988,7 +35219,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L30", - "community": 475, + "community": 33, "norm_label": "client()", "id": "tests_test_request_id_client" }, @@ -31997,7 +35228,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L34", - "community": 475, + "community": 33, "norm_label": "testrequestidmiddleware", "id": "tests_test_request_id_testrequestidmiddleware" }, @@ -32006,7 +35237,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L35", - "community": 475, + "community": 33, "norm_label": ".test_generates_uuid_when_no_header()", "id": "tests_test_request_id_testrequestidmiddleware_test_generates_uuid_when_no_header" }, @@ -32015,7 +35246,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L44", - "community": 475, + "community": 33, "norm_label": ".test_returns_generated_uuid_in_body()", "id": "tests_test_request_id_testrequestidmiddleware_test_returns_generated_uuid_in_body" }, @@ -32024,7 +35255,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L51", - "community": 475, + "community": 33, "norm_label": ".test_uses_client_provided_request_id()", "id": "tests_test_request_id_testrequestidmiddleware_test_uses_client_provided_request_id" }, @@ -32033,7 +35264,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L57", - "community": 475, + "community": 33, "norm_label": ".test_response_header_matches_request()", "id": "tests_test_request_id_testrequestidmiddleware_test_response_header_matches_request" }, @@ -32042,7 +35273,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L62", - "community": 475, + "community": 33, "norm_label": ".test_different_requests_get_different_ids()", "id": "tests_test_request_id_testrequestidmiddleware_test_different_requests_get_different_ids" }, @@ -32051,7 +35282,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L67", - "community": 475, + "community": 33, "norm_label": ".test_context_var_available_in_route()", "id": "tests_test_request_id_testrequestidmiddleware_test_context_var_available_in_route" }, @@ -32060,7 +35291,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L72", - "community": 475, + "community": 33, "norm_label": ".test_empty_x_request_id_header_generates_uuid()", "id": "tests_test_request_id_testrequestidmiddleware_test_empty_x_request_id_header_generates_uuid" }, @@ -32069,7 +35300,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L81", - "community": 475, + "community": 33, "norm_label": ".test_middleware_preserves_response_body()", "id": "tests_test_request_id_testrequestidmiddleware_test_middleware_preserves_response_body" }, @@ -32267,7 +35498,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L9", - "community": 45, + "community": 491, "norm_label": "testcheckaccess", "id": "tests_test_roles_coverage_testcheckaccess" }, @@ -32276,7 +35507,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L10", - "community": 45, + "community": 491, "norm_label": ".test_admin_always_passes()", "id": "tests_test_roles_coverage_testcheckaccess_test_admin_always_passes" }, @@ -32285,7 +35516,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L13", - "community": 45, + "community": 491, "norm_label": ".test_user_has_view_profile()", "id": "tests_test_roles_coverage_testcheckaccess_test_user_has_view_profile" }, @@ -32294,7 +35525,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L16", - "community": 45, + "community": 491, "norm_label": ".test_user_lacks_prometheus()", "id": "tests_test_roles_coverage_testcheckaccess_test_user_lacks_prometheus" }, @@ -32303,7 +35534,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L19", - "community": 45, + "community": 491, "norm_label": ".test_premium_has_prometheus()", "id": "tests_test_roles_coverage_testcheckaccess_test_premium_has_prometheus" }, @@ -32312,7 +35543,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L22", - "community": 45, + "community": 491, "norm_label": ".test_developer_starter_has_api()", "id": "tests_test_roles_coverage_testcheckaccess_test_developer_starter_has_api" }, @@ -32321,7 +35552,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L25", - "community": 45, + "community": 491, "norm_label": ".test_developer_starter_lacks_enterprise()", "id": "tests_test_roles_coverage_testcheckaccess_test_developer_starter_lacks_enterprise" }, @@ -32330,7 +35561,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L28", - "community": 45, + "community": 491, "norm_label": ".test_developer_enterprise_has_all_dev()", "id": "tests_test_roles_coverage_testcheckaccess_test_developer_enterprise_has_all_dev" }, @@ -32339,7 +35570,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L32", - "community": 45, + "community": 491, "norm_label": ".test_unknown_role_ignored()", "id": "tests_test_roles_coverage_testcheckaccess_test_unknown_role_ignored" }, @@ -32348,7 +35579,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L35", - "community": 45, + "community": 491, "norm_label": ".test_multiple_roles_combined()", "id": "tests_test_roles_coverage_testcheckaccess_test_multiple_roles_combined" }, @@ -32357,7 +35588,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L38", - "community": 45, + "community": 491, "norm_label": ".test_empty_roles()", "id": "tests_test_roles_coverage_testcheckaccess_test_empty_roles" }, @@ -32366,7 +35597,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L41", - "community": 45, + "community": 491, "norm_label": ".test_admin_skips_other_roles()", "id": "tests_test_roles_coverage_testcheckaccess_test_admin_skips_other_roles" }, @@ -32852,7 +36083,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L6", - "community": 222, + "community": 49, "norm_label": "testsandboxtooldefinitions", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions" }, @@ -32861,7 +36092,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L7", - "community": 222, + "community": 49, "norm_label": ".test_execute_code_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_in_registry" }, @@ -32870,7 +36101,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L10", - "community": 222, + "community": 49, "norm_label": ".test_read_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_file_in_registry" }, @@ -32879,7 +36110,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L13", - "community": 222, + "community": 49, "norm_label": ".test_write_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_write_file_in_registry" }, @@ -32888,7 +36119,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L16", - "community": 222, + "community": 49, "norm_label": ".test_list_files_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_list_files_in_registry" }, @@ -32897,7 +36128,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L19", - "community": 222, + "community": 49, "norm_label": ".test_execute_code_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_has_docstring" }, @@ -33329,7 +36560,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L1", - "community": 162, + "community": 16, "norm_label": "test_state_tools.py", "id": "tests_test_state_tools_py" }, @@ -33338,7 +36569,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L15", - "community": 148, + "community": 16, "norm_label": "teststatetoolfunctions", "id": "tests_test_state_tools_teststatetoolfunctions" }, @@ -33347,7 +36578,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L16", - "community": 148, + "community": 16, "norm_label": ".test_get_state_has_docstring()", "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_has_docstring" }, @@ -33356,7 +36587,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L20", - "community": 148, + "community": 16, "norm_label": ".test_set_state_has_docstring()", "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_has_docstring" }, @@ -33365,7 +36596,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L24", - "community": 148, + "community": 16, "norm_label": ".test_get_state_signature()", "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_signature" }, @@ -33374,7 +36605,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L31", - "community": 148, + "community": 16, "norm_label": ".test_set_state_signature()", "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_signature" }, @@ -33383,7 +36614,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L38", - "community": 148, + "community": 16, "norm_label": ".test_get_state_has_type_hints()", "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_has_type_hints" }, @@ -33392,7 +36623,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L44", - "community": 148, + "community": 16, "norm_label": ".test_set_state_has_type_hints()", "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_has_type_hints" }, @@ -33401,7 +36632,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L50", - "community": 148, + "community": 16, "norm_label": ".test_state_tools_in_registry()", "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tools_in_registry" }, @@ -33410,7 +36641,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L56", - "community": 148, + "community": 16, "norm_label": ".test_registry_has_all_tools()", "id": "tests_test_state_tools_teststatetoolfunctions_test_registry_has_all_tools" }, @@ -33419,7 +36650,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L60", - "community": 162, + "community": 16, "norm_label": "testgetstate", "id": "tests_test_state_tools_testgetstate" }, @@ -33428,7 +36659,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L62", - "community": 162, + "community": 16, "norm_label": "test_get_state_specific_key()", "id": "tests_test_state_tools_test_get_state_specific_key" }, @@ -33437,7 +36668,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L69", - "community": 162, + "community": 16, "norm_label": "test_get_state_all()", "id": "tests_test_state_tools_test_get_state_all" }, @@ -33446,7 +36677,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L77", - "community": 162, + "community": 16, "norm_label": "test_get_state_missing_key()", "id": "tests_test_state_tools_test_get_state_missing_key" }, @@ -33455,7 +36686,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L83", - "community": 162, + "community": 16, "norm_label": "test_get_state_no_state()", "id": "tests_test_state_tools_test_get_state_no_state" }, @@ -33464,7 +36695,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L88", - "community": 162, + "community": 16, "norm_label": "testsetstate", "id": "tests_test_state_tools_testsetstate" }, @@ -33473,7 +36704,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L90", - "community": 162, + "community": 16, "norm_label": "test_set_state()", "id": "tests_test_state_tools_test_set_state" }, @@ -33482,7 +36713,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L97", - "community": 487, + "community": 546, "norm_label": "test_set_state_no_state()", "id": "tests_test_state_tools_test_set_state_no_state" }, @@ -33491,7 +36722,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L102", - "community": 162, + "community": 16, "norm_label": "teststatedispatch", "id": "tests_test_state_tools_teststatedispatch" }, @@ -33500,7 +36731,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L104", - "community": 162, + "community": 16, "norm_label": "test_dispatch_get_state()", "id": "tests_test_state_tools_test_dispatch_get_state" }, @@ -33509,7 +36740,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L114", - "community": 162, + "community": 16, "norm_label": "test_dispatch_set_state()", "id": "tests_test_state_tools_test_dispatch_set_state" }, @@ -33518,7 +36749,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L1", - "community": 184, + "community": 84, "norm_label": "test_status_endpoint.py", "id": "tests_test_status_endpoint_py" }, @@ -33527,7 +36758,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L9", - "community": 184, + "community": 84, "norm_label": "statusclient()", "id": "tests_test_status_endpoint_statusclient" }, @@ -33536,7 +36767,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L16", - "community": 184, + "community": 84, "norm_label": "teststatusendpoint", "id": "tests_test_status_endpoint_teststatusendpoint" }, @@ -33545,7 +36776,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L17", - "community": 184, + "community": 84, "norm_label": ".test_status_returns_200()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_returns_200" }, @@ -33554,7 +36785,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L21", - "community": 184, + "community": 84, "norm_label": ".test_status_has_healthy()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_healthy" }, @@ -33563,7 +36794,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L25", - "community": 184, + "community": 84, "norm_label": ".test_status_has_uptime_format()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_uptime_format" }, @@ -33572,7 +36803,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L30", - "community": 184, + "community": 84, "norm_label": ".test_status_has_services_dict()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_services_dict" }, @@ -33581,7 +36812,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L35", - "community": 184, + "community": 84, "norm_label": ".test_status_services_contain_expected_keys()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_services_contain_expected_keys" }, @@ -33590,7 +36821,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L41", - "community": 184, + "community": 84, "norm_label": ".test_status_local_service_has_port_and_type()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_local_service_has_port_and_type" }, @@ -33599,7 +36830,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L51", - "community": 184, + "community": 84, "norm_label": ".test_status_disabled_service()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_disabled_service" }, @@ -33608,7 +36839,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L57", - "community": 184, + "community": 84, "norm_label": ".test_status_scraper_no_port()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_scraper_no_port" }, @@ -33617,7 +36848,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L63", - "community": 184, + "community": 84, "norm_label": ".test_health_endpoint()", "id": "tests_test_status_endpoint_teststatusendpoint_test_health_endpoint" }, @@ -33626,7 +36857,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L69", - "community": 184, + "community": 84, "norm_label": "testscrapertrigger", "id": "tests_test_status_endpoint_testscrapertrigger" }, @@ -33635,7 +36866,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L70", - "community": 184, + "community": 84, "norm_label": ".test_scraper_trigger_debug_mode()", "id": "tests_test_status_endpoint_testscrapertrigger_test_scraper_trigger_debug_mode" }, @@ -33644,7 +36875,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L77", - "community": 184, + "community": 84, "norm_label": ".test_scraper_trigger_not_debug()", "id": "tests_test_status_endpoint_testscrapertrigger_test_scraper_trigger_not_debug" }, @@ -33653,7 +36884,7 @@ "file_type": "rationale", "source_file": "tests/test_status_endpoint.py", "source_location": "L1", - "community": 184, + "community": 84, "norm_label": "tests for run.py /status endpoint \u2014 covers status response structure.", "id": "tests_test_status_endpoint_rationale_1" }, @@ -33662,7 +36893,7 @@ "file_type": "rationale", "source_file": "tests/test_status_endpoint.py", "source_location": "L10", - "community": 184, + "community": 84, "norm_label": "create a test client for the status endpoint without running lifespan.", "id": "tests_test_status_endpoint_rationale_10" }, @@ -33779,7 +37010,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L152", - "community": 571, + "community": 603, "norm_label": "testverifyapikey", "id": "tests_test_stocks_api_coverage_testverifyapikey" }, @@ -33896,7 +37127,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L291", - "community": 500, + "community": 26, "norm_label": "test_create_key_new_user()", "id": "tests_test_stocks_api_coverage_test_create_key_new_user" }, @@ -33914,7 +37145,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L323", - "community": 500, + "community": 26, "norm_label": "test_create_key_exception_rollback()", "id": "tests_test_stocks_api_coverage_test_create_key_exception_rollback" }, @@ -34058,7 +37289,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L451", - "community": 86, + "community": 105, "norm_label": ".test_deserialize_mixed_string_none_parses_json()", "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_mixed_string_none_parses_json" }, @@ -34067,7 +37298,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L473", - "community": 520, + "community": 3, "norm_label": ".test_deserialize_multiple_special_cols_with_none()", "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_multiple_special_cols_with_none" }, @@ -34076,7 +37307,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L498", - "community": 86, + "community": 105, "norm_label": "testfilterbysearchterms", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms" }, @@ -34085,7 +37316,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L501", - "community": 86, + "community": 105, "norm_label": "._make_manager()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_make_manager" }, @@ -34094,7 +37325,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L509", - "community": 86, + "community": 105, "norm_label": ".test_filter_empty_search_returns_all()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_empty_search_returns_all" }, @@ -34103,7 +37334,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L515", - "community": 86, + "community": 105, "norm_label": ".test_filter_ticker_index_hit()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_ticker_index_hit" }, @@ -34112,7 +37343,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L523", - "community": 86, + "community": 105, "norm_label": ".test_filter_multiple_terms_index()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_multiple_terms_index" }, @@ -34121,7 +37352,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L530", - "community": 86, + "community": 105, "norm_label": ".test_filter_no_index_match_fallback_to_str()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_no_index_match_fallback_to_str" }, @@ -34130,7 +37361,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L538", - "community": 86, + "community": 105, "norm_label": ".test_filter_fallback_multiple_terms()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_fallback_multiple_terms" }, @@ -34139,7 +37370,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L545", - "community": 86, + "community": 105, "norm_label": ".test_filter_case_insensitive()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_case_insensitive" }, @@ -34292,7 +37523,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L686", - "community": 28, + "community": 474, "norm_label": ".test_historical_with_date_range()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_date_range" }, @@ -34391,7 +37622,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L766", - "community": 39, + "community": 188, "norm_label": ".test_fundamental_with_invalid_date()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_invalid_date" }, @@ -34463,7 +37694,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L841", - "community": 39, + "community": 17, "norm_label": ".test_fundamental_date_range_two_dates()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_date_range_two_dates" }, @@ -34490,7 +37721,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L882", - "community": 17, + "community": 39, "norm_label": ".test_fundamental_search_multiple_terms()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_search_multiple_terms" }, @@ -34508,7 +37739,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L898", - "community": 39, + "community": 17, "norm_label": ".test_fundamental_dates_one_date()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_dates_one_date" }, @@ -34535,7 +37766,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L963", - "community": 3, + "community": 112, "norm_label": ".test_fundamental_requires_search_fields_or_dates()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_requires_search_fields_or_dates" }, @@ -34697,7 +37928,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1139", - "community": 10, + "community": 529, "norm_label": ".test_cotations_http_route()", "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_http_route" }, @@ -34787,7 +38018,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1265", - "community": 587, + "community": 529, "norm_label": ".test_http_route_search_required()", "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_search_required" }, @@ -34823,7 +38054,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1315", - "community": 22, + "community": 562, "norm_label": ".test_cotations_search_required()", "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_search_required" }, @@ -34859,7 +38090,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L153", - "community": 571, + "community": 603, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_153" }, @@ -35012,7 +38243,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L452", - "community": 86, + "community": 105, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_452" }, @@ -35021,7 +38252,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L474", - "community": 520, + "community": 3, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_474" }, @@ -35030,7 +38261,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L499", - "community": 86, + "community": 105, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_499" }, @@ -35093,7 +38324,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L687", - "community": 28, + "community": 474, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_687" }, @@ -35129,7 +38360,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L767", - "community": 39, + "community": 188, "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", "id": "tests_test_stocks_api_coverage_rationale_767" }, @@ -35156,7 +38387,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L842", - "community": 39, + "community": 188, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_842" }, @@ -35183,7 +38414,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L883", - "community": 17, + "community": 39, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_883" }, @@ -35201,7 +38432,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L899", - "community": 39, + "community": 17, "norm_label": "len(daterange) == 1 -> per-ticker closest snapshot.", "id": "tests_test_stocks_api_coverage_rationale_899" }, @@ -35264,7 +38495,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1140", - "community": 10, + "community": 529, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1140" }, @@ -35282,7 +38513,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1266", - "community": 587, + "community": 529, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1266" }, @@ -35291,7 +38522,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1316", - "community": 22, + "community": 562, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1316" }, @@ -36299,7 +39530,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L1", - "community": 172, + "community": 122, "norm_label": "test_thread_safety.py", "id": "tests_test_thread_safety_py" }, @@ -36308,7 +39539,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L21", - "community": 580, + "community": 122, "norm_label": "testgetsession", "id": "tests_test_thread_safety_testgetsession" }, @@ -36317,7 +39548,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L24", - "community": 580, + "community": 122, "norm_label": ".test_same_session_within_same_thread()", "id": "tests_test_thread_safety_testgetsession_test_same_session_within_same_thread" }, @@ -36326,7 +39557,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L32", - "community": 580, + "community": 122, "norm_label": ".test_different_sessions_in_different_threads()", "id": "tests_test_thread_safety_testgetsession_test_different_sessions_in_different_threads" }, @@ -36335,7 +39566,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L52", - "community": 580, + "community": 122, "norm_label": ".test_isolation_under_high_concurrency()", "id": "tests_test_thread_safety_testgetsession_test_isolation_under_high_concurrency" }, @@ -36344,7 +39575,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L73", - "community": 580, + "community": 122, "norm_label": ".test_session_is_requests_session()", "id": "tests_test_thread_safety_testgetsession_test_session_is_requests_session" }, @@ -36389,7 +39620,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L175", - "community": 172, + "community": 122, "norm_label": "testconcurrentgetsession", "id": "tests_test_thread_safety_testconcurrentgetsession" }, @@ -36398,7 +39629,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L178", - "community": 172, + "community": 122, "norm_label": ".test_getsession_returns_thread_local_sessions()", "id": "tests_test_thread_safety_testconcurrentgetsession_test_getsession_returns_thread_local_sessions" }, @@ -36407,7 +39638,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L199", - "community": 172, + "community": 122, "norm_label": ".test_connectivity_uses_getsession()", "id": "tests_test_thread_safety_testconcurrentgetsession_test_connectivity_uses_getsession" }, @@ -36416,7 +39647,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L1", - "community": 172, + "community": 122, "norm_label": "tests for thread safety utilities (issues 5 & 6). issue 5: discordhandler use", "id": "tests_test_thread_safety_rationale_1" }, @@ -36425,7 +39656,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L22", - "community": 580, + "community": 122, "norm_label": "verify that getsession() returns per-thread session instances.", "id": "tests_test_thread_safety_rationale_22" }, @@ -36434,7 +39665,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L25", - "community": 580, + "community": 122, "norm_label": "calling getsession() twice in the same thread returns the same object.", "id": "tests_test_thread_safety_rationale_25" }, @@ -36443,7 +39674,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L33", - "community": 580, + "community": 122, "norm_label": "two threads must not share a session object.", "id": "tests_test_thread_safety_rationale_33" }, @@ -36452,7 +39683,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L53", - "community": 580, + "community": 122, "norm_label": "with 20 concurrent threads, every thread must get its own session.", "id": "tests_test_thread_safety_rationale_53" }, @@ -36461,7 +39692,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L74", - "community": 580, + "community": 122, "norm_label": "the returned object must be a real requests.session.", "id": "tests_test_thread_safety_rationale_74" }, @@ -36506,7 +39737,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L176", - "community": 172, + "community": 122, "norm_label": "verify getsession returns thread-local sessions under concurrency.", "id": "tests_test_thread_safety_rationale_176" }, @@ -36515,7 +39746,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L179", - "community": 172, + "community": 122, "norm_label": "getsession() must give each thread its own session.", "id": "tests_test_thread_safety_rationale_179" }, @@ -36524,7 +39755,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L200", - "community": 172, + "community": 122, "norm_label": "connectivity.checkserviceconnection must call getsession(), not use a global ses", "id": "tests_test_thread_safety_rationale_200" }, @@ -36533,7 +39764,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L1", - "community": 570, + "community": 518, "norm_label": "test_type_aware_decay.py", "id": "tests_test_type_aware_decay_py" }, @@ -36542,7 +39773,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L11", - "community": 570, + "community": 518, "norm_label": "_create()", "id": "tests_test_type_aware_decay_create" }, @@ -36551,7 +39782,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L29", - "community": 570, + "community": 518, "norm_label": "testtypeawaredecay", "id": "tests_test_type_aware_decay_testtypeawaredecay" }, @@ -36560,7 +39791,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L30", - "community": 570, + "community": 518, "norm_label": ".test_preference_decays_slowly()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_decays_slowly" }, @@ -36569,7 +39800,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L36", - "community": 570, + "community": 518, "norm_label": ".test_context_decays_fast()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_context_decays_fast" }, @@ -36578,7 +39809,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L42", - "community": 570, + "community": 518, "norm_label": ".test_analysis_decays_normally()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_analysis_decays_normally" }, @@ -36587,7 +39818,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L48", - "community": 570, + "community": 518, "norm_label": ".test_feedback_decays_medium()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_feedback_decays_medium" }, @@ -36596,7 +39827,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L54", - "community": 570, + "community": 518, "norm_label": ".test_unknown_type_uses_default()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_unknown_type_uses_default" }, @@ -36605,7 +39836,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L60", - "community": 570, + "community": 518, "norm_label": ".test_mixed_types_all_correct()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_mixed_types_all_correct" }, @@ -36614,7 +39845,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L76", - "community": 570, + "community": 518, "norm_label": ".test_preference_survives_longer()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_survives_longer" }, @@ -36623,7 +39854,7 @@ "file_type": "rationale", "source_file": "tests/test_type_aware_decay.py", "source_location": "L77", - "community": 570, + "community": 518, "norm_label": "after 10 cycles, preference (0.99^10) > context (0.90^10).", "id": "tests_test_type_aware_decay_rationale_77" }, @@ -36767,7 +39998,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L1", - "community": 131, + "community": 104, "norm_label": "test_vector_utils.py", "id": "tests_test_vector_utils_py" }, @@ -36776,7 +40007,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L6", - "community": 13, + "community": 104, "norm_label": "testbatchcosinesimilarity", "id": "tests_test_vector_utils_testbatchcosinesimilarity" }, @@ -36785,7 +40016,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L7", - "community": 13, + "community": 104, "norm_label": ".test_empty_matrix()", "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_empty_matrix" }, @@ -36794,7 +40025,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L11", - "community": 13, + "community": 104, "norm_label": ".test_single_row()", "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_single_row" }, @@ -36803,7 +40034,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L17", - "community": 13, + "community": 104, "norm_label": ".test_multiple_rows()", "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_multiple_rows" }, @@ -36812,7 +40043,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L32", - "community": 13, + "community": 104, "norm_label": ".test_zero_query()", "id": "tests_test_vector_utils_testbatchcosinesimilarity_test_zero_query" }, @@ -38180,7 +41411,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1042", - "community": 16, + "community": 148, "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", "id": "tests_test_controllers_coverage_rationale_1042" }, @@ -38189,7 +41420,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1083", - "community": 16, + "community": 148, "norm_label": "covers lines 114-115: session ownership check fails.", "id": "tests_test_controllers_coverage_rationale_1083" }, @@ -38198,7 +41429,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1120", - "community": 16, + "community": 148, "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", "id": "tests_test_controllers_coverage_rationale_1120" }, @@ -38207,7 +41438,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1138", - "community": 498, + "community": 511, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1138" }, @@ -38270,7 +41501,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1223", - "community": 563, + "community": 578, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1223" }, @@ -38279,7 +41510,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1226", - "community": 564, + "community": 584, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1226" }, @@ -38288,7 +41519,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1243", - "community": 568, + "community": 588, "norm_label": "covers line 27: user already has the role.", "id": "tests_test_controllers_coverage_rationale_1243" }, @@ -38297,7 +41528,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1257", - "community": 528, + "community": 568, "norm_label": "covers lines 19-20: user not found raises 404.", "id": "tests_test_controllers_coverage_rationale_1257" }, @@ -38315,7 +41546,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1301", - "community": 569, + "community": 592, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1301" }, @@ -38324,7 +41555,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1317", - "community": 546, + "community": 535, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1317" }, @@ -38333,7 +41564,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1334", - "community": 560, + "community": 544, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1334" }, @@ -38342,7 +41573,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1351", - "community": 561, + "community": 560, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1351" }, @@ -38405,7 +41636,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1435", - "community": 498, + "community": 45, "norm_label": "covers line 13: usermanager.__init__.", "id": "tests_test_controllers_coverage_rationale_1435" }, @@ -38477,7 +41708,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L947", - "community": 68, + "community": 172, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_947" }, @@ -38513,7 +41744,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L42", - "community": 126, + "community": 528, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_42" }, @@ -38522,7 +41753,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L79", - "community": 162, + "community": 16, "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", "id": "prometheus_tools_rationale_79" }, @@ -38531,7 +41762,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L147", - "community": 208, + "community": 573, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_147" }, @@ -38837,7 +42068,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L131", - "community": 208, + "community": 573, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_131" }, @@ -39035,7 +42266,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L130", - "community": 208, + "community": 573, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_130" }, @@ -39044,7 +42275,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L7", - "community": 522, + "community": 575, "norm_label": "testagentsandboxintegration", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration" }, @@ -39053,7 +42284,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L8", - "community": 522, + "community": 575, "norm_label": ".test_build_system_prompt_includes_sandbox_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_includes_sandbox_instructions" }, @@ -39062,7 +42293,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L14", - "community": 522, + "community": 575, "norm_label": ".test_build_system_prompt_includes_state_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_includes_state_instructions" }, @@ -39071,7 +42302,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L19", - "community": 522, + "community": 575, "norm_label": ".test_build_system_prompt_with_state()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_with_state" }, @@ -39170,7 +42401,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L41", - "community": 126, + "community": 528, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_41" }, @@ -39179,7 +42410,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L78", - "community": 162, + "community": 16, "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", "id": "prometheus_tools_rationale_78" }, @@ -39188,7 +42419,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L93", - "community": 487, + "community": 546, "norm_label": "store a value in the harness state for this session. use this to save inter", "id": "prometheus_tools_rationale_93" }, @@ -41375,7 +44606,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L114", - "community": 100, + "community": 16, "norm_label": "test_get_state_no_state_returns_error()", "id": "tests_test_prometheus_tools_test_get_state_no_state_returns_error" }, @@ -41384,7 +44615,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L119", - "community": 487, + "community": 100, "norm_label": "test_set_state_no_state_returns_error()", "id": "tests_test_prometheus_tools_test_set_state_no_state_returns_error" }, @@ -41402,7 +44633,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L128", - "community": 100, + "community": 585, "norm_label": "every function in tool_registry must have gemini-safe signatures. custom cl", "id": "tests_test_prometheus_tools_rationale_128" }, @@ -41411,7 +44642,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L137", - "community": 100, + "community": 585, "norm_label": "regression: harnessstate must never leak into tool signatures.", "id": "tests_test_prometheus_tools_rationale_137" }, @@ -41420,7 +44651,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L1", - "community": 110, + "community": 135, "norm_label": "cache.py", "id": "main_app_prometheus_cache_py" }, @@ -41429,7 +44660,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L7", - "community": 110, + "community": 135, "norm_label": "resultcache", "id": "prometheus_cache_resultcache" }, @@ -41438,7 +44669,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L8", - "community": 110, + "community": 135, "norm_label": ".__init__()", "id": "prometheus_cache_resultcache_init" }, @@ -41447,7 +44678,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L11", - "community": 110, + "community": 135, "norm_label": ".cachepath()", "id": "prometheus_cache_resultcache_cachepath" }, @@ -41456,7 +44687,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L15", - "community": 110, + "community": 135, "norm_label": ".get()", "id": "prometheus_cache_resultcache_get" }, @@ -41465,7 +44696,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L21", - "community": 110, + "community": 135, "norm_label": ".set()", "id": "prometheus_cache_resultcache_set" }, @@ -41474,7 +44705,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L31", - "community": 110, + "community": 135, "norm_label": ".invalidate()", "id": "prometheus_cache_resultcache_invalidate" }, @@ -41483,7 +44714,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L38", - "community": 110, + "community": 135, "norm_label": ".exists()", "id": "prometheus_cache_resultcache_exists" }, @@ -41528,7 +44759,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L139", - "community": 523, + "community": 571, "norm_label": "read_sandbox_file()", "id": "prometheus_tools_read_sandbox_file" }, @@ -41537,7 +44768,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L151", - "community": 523, + "community": 571, "norm_label": "upload_to_sandbox()", "id": "prometheus_tools_upload_to_sandbox" }, @@ -41546,7 +44777,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L165", - "community": 523, + "community": 571, "norm_label": "check_cache()", "id": "prometheus_tools_check_cache" }, @@ -41564,7 +44795,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L109", - "community": 487, + "community": 546, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", "id": "prometheus_tools_rationale_109" }, @@ -41573,7 +44804,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L140", - "community": 523, + "community": 571, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_140" }, @@ -41582,7 +44813,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L152", - "community": 523, + "community": 571, "norm_label": "upload a file to the sandbox filesystem. use this to push data files (csv,", "id": "prometheus_tools_rationale_152" }, @@ -41591,7 +44822,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L166", - "community": 523, + "community": 571, "norm_label": "check if a computed result exists in the cache. use before executing expens", "id": "prometheus_tools_rationale_166" }, @@ -41600,7 +44831,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L9", - "community": 522, + "community": 575, "norm_label": ".test_build_system_prompt_no_state()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_no_state" }, @@ -41609,7 +44840,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L20", - "community": 522, + "community": 575, "norm_label": ".test_build_system_prompt_empty_state()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_empty_state" }, @@ -41618,7 +44849,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L25", - "community": 522, + "community": 575, "norm_label": ".test_system_prompt_includes_state_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_state_instructions" }, @@ -41627,7 +44858,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L30", - "community": 522, + "community": 575, "norm_label": ".test_system_prompt_includes_sandbox_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_sandbox_instructions" }, @@ -41636,7 +44867,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L34", - "community": 522, + "community": 575, "norm_label": ".test_system_prompt_includes_cache_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_cache_instructions" }, @@ -41645,7 +44876,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L38", - "community": 522, + "community": 575, "norm_label": ".test_makechat_uses_tool_registry()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_makechat_uses_tool_registry" }, @@ -41816,7 +45047,7 @@ "file_type": "code", "source_file": "tests/test_config_sandbox.py", "source_location": "L1", - "community": 251, + "community": 102, "norm_label": "test_config_sandbox.py", "id": "tests_test_config_sandbox_py" }, @@ -42113,7 +45344,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L12", - "community": 222, + "community": 49, "norm_label": ".test_read_sandbox_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_in_registry" }, @@ -42122,7 +45353,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L15", - "community": 222, + "community": 49, "norm_label": ".test_check_cache_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_in_registry" }, @@ -42131,7 +45362,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L23", - "community": 222, + "community": 49, "norm_label": ".test_read_sandbox_file_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_has_docstring" }, @@ -42140,7 +45371,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L28", - "community": 222, + "community": 49, "norm_label": ".test_check_cache_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_has_docstring" }, @@ -42473,7 +45704,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L19", - "community": 110, + "community": 135, "norm_label": "._cache_path()", "id": "prometheus_cache_resultcache_cache_path" }, @@ -42482,7 +45713,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L1", - "community": 110, + "community": 135, "norm_label": "resultcache \u2014 sha256-keyed file-based cache for computed results.", "id": "prometheus_cache_rationale_1" }, @@ -42491,7 +45722,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L10", - "community": 110, + "community": 135, "norm_label": "file-based cache keyed by sha256 of code. stores results as json under:", "id": "prometheus_cache_rationale_10" }, @@ -42500,7 +45731,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L24", - "community": 110, + "community": 135, "norm_label": "return cached result dict or none if miss.", "id": "prometheus_cache_rationale_24" }, @@ -42509,7 +45740,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L31", - "community": 110, + "community": 135, "norm_label": "store result with timestamp.", "id": "prometheus_cache_rationale_31" }, @@ -42518,7 +45749,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L42", - "community": 110, + "community": 135, "norm_label": "delete all cached results for a session.", "id": "prometheus_cache_rationale_42" }, @@ -42527,7 +45758,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L50", - "community": 110, + "community": 135, "norm_label": "check if a result exists for the given code.", "id": "prometheus_cache_rationale_50" }, @@ -42869,7 +46100,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L77", - "community": 162, + "community": 16, "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", "id": "prometheus_tools_rationale_77" }, @@ -42932,7 +46163,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L104", - "community": 162, + "community": 16, "norm_label": "executestatetool()", "id": "prometheus_tools_executestatetool" }, @@ -42950,7 +46181,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L39", - "community": 126, + "community": 528, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_39" }, @@ -42959,7 +46190,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L44", - "community": 148, + "community": 16, "norm_label": ".test_state_tools_is_list_of_callables()", "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tools_is_list_of_callables" }, @@ -42968,7 +46199,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L50", - "community": 148, + "community": 16, "norm_label": ".test_state_tool_names()", "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tool_names" }, @@ -42977,7 +46208,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L54", - "community": 162, + "community": 16, "norm_label": "testexecutestatetool", "id": "tests_test_state_tools_testexecutestatetool" }, @@ -42986,7 +46217,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L84", - "community": 162, + "community": 16, "norm_label": "test_unknown_tool()", "id": "tests_test_state_tools_test_unknown_tool" }, @@ -43013,7 +46244,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/state.py", "source_location": "L22", - "community": 215, + "community": 54, "norm_label": "store a value in state. marks state as changed for context injection.", "id": "prometheus_state_rationale_22" }, @@ -43076,7 +46307,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L38", - "community": 126, + "community": 528, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_38" }, @@ -43130,7 +46361,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L46", - "community": 130, + "community": 605, "norm_label": "executememorytool()", "id": "prometheus_tools_executememorytool" }, @@ -43139,7 +46370,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L29", - "community": 126, + "community": 528, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_29" }, @@ -43274,7 +46505,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L52", - "community": 49, + "community": 575, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_52" }, @@ -43283,7 +46514,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L89", - "community": 575, + "community": 589, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_89" }, @@ -43310,7 +46541,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L57", - "community": 49, + "community": 575, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_57" }, @@ -43319,7 +46550,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L92", - "community": 575, + "community": 589, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_92" }, @@ -43364,7 +46595,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L85", - "community": 544, + "community": 518, "norm_label": "score below threshold + accesscount=0 + 90+ days \u2192 archived.", "id": "tests_test_memory_maintenance_rationale_85" }, @@ -43373,7 +46604,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L92", - "community": 573, + "community": 518, "norm_label": "low score but accessed recently \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_92" }, @@ -43382,7 +46613,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L99", - "community": 539, + "community": 518, "norm_label": "zero access but score still above threshold \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_99" }, @@ -43391,7 +46622,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L106", - "community": 570, + "community": 518, "norm_label": "even with low score, if accessed \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_106" }, @@ -43400,7 +46631,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L113", - "community": 570, + "community": 518, "norm_label": "already archived memories are skipped.", "id": "tests_test_memory_maintenance_rationale_113" }, @@ -43436,7 +46667,7 @@ "file_type": "code", "source_file": "main/utils/models/loader.py", "source_location": "L23", - "community": 130, + "community": 605, "norm_label": "embed()", "id": "models_loader_embed" }, @@ -43616,7 +46847,7 @@ "file_type": "code", "source_file": "main/utils/models/loader.py", "source_location": "L11", - "community": 130, + "community": 605, "norm_label": "_downloadmodel()", "id": "models_loader_downloadmodel" }, @@ -43733,7 +46964,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1258", - "community": 528, + "community": 568, "norm_label": "covers lines 19-20: user not found raises 404.", "id": "tests_test_controllers_coverage_rationale_1258" }, @@ -43751,7 +46982,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1277", - "community": 563, + "community": 578, "norm_label": "covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", "id": "tests_test_controllers_coverage_rationale_1277" }, @@ -43760,7 +46991,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1302", - "community": 569, + "community": 592, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1302" }, @@ -43769,7 +47000,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1318", - "community": 546, + "community": 535, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1318" }, @@ -43778,7 +47009,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1335", - "community": 560, + "community": 544, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1335" }, @@ -43787,7 +47018,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1352", - "community": 561, + "community": 560, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1352" }, @@ -43814,7 +47045,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1389", - "community": 560, + "community": 544, "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", "id": "tests_test_controllers_coverage_rationale_1389" }, @@ -43850,7 +47081,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1436", - "community": 498, + "community": 45, "norm_label": "covers line 13: usermanager.__init__.", "id": "tests_test_controllers_coverage_rationale_1436" }, @@ -44075,7 +47306,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L56", - "community": 49, + "community": 575, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_56" }, @@ -44084,7 +47315,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L91", - "community": 575, + "community": 589, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_91" }, @@ -44093,7 +47324,7 @@ "file_type": "code", "source_file": "main/utils/vector.py", "source_location": "L1", - "community": 131, + "community": 184, "norm_label": "vector.py", "id": "main_utils_vector_py" }, @@ -44102,7 +47333,7 @@ "file_type": "code", "source_file": "main/utils/vector.py", "source_location": "L8", - "community": 13, + "community": 104, "norm_label": "batchcosinesimilarity()", "id": "utils_vector_batchcosinesimilarity" }, @@ -44408,7 +47639,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L48", - "community": 49, + "community": 575, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_48" }, @@ -44417,7 +47648,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L76", - "community": 575, + "community": 589, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_76" }, @@ -44507,7 +47738,7 @@ "file_type": "code", "source_file": "main/controller/prometheus_controller.py", "source_location": "L177", - "community": 130, + "community": 605, "norm_label": "creatememory()", "id": "controller_prometheus_controller_creatememory" }, @@ -44669,7 +47900,7 @@ "file_type": "rationale", "source_file": "main/utils/vector.py", "source_location": "L6", - "community": 131, + "community": 184, "norm_label": "vectorized cosine similarity: one query against n embeddings.", "id": "utils_vector_rationale_6" }, @@ -45317,7 +48548,7 @@ "file_type": "code", "source_file": "main/controller/prometheus_controller.py", "source_location": "L177", - "community": 130, + "community": 605, "norm_label": "create_memory()", "id": "controller_prometheus_controller_create_memory" }, @@ -45335,7 +48566,7 @@ "file_type": "code", "source_file": "main/utils/vector.py", "source_location": "L5", - "community": 131, + "community": 184, "norm_label": "pack_vector()", "id": "utils_vector_pack_vector" }, @@ -45344,7 +48575,7 @@ "file_type": "code", "source_file": "main/utils/vector.py", "source_location": "L11", - "community": 131, + "community": 184, "norm_label": "unpack_vector()", "id": "utils_vector_unpack_vector" }, @@ -45362,7 +48593,7 @@ "file_type": "code", "source_file": "main/utils/vector.py", "source_location": "L28", - "community": 13, + "community": 104, "norm_label": "batch_cosine_similarity()", "id": "utils_vector_batch_cosine_similarity" }, @@ -45380,7 +48611,7 @@ "file_type": "rationale", "source_file": "main/utils/vector.py", "source_location": "L12", - "community": 131, + "community": 184, "norm_label": "unpack mysql blob to float list.", "id": "utils_vector_rationale_12" }, @@ -45398,7 +48629,7 @@ "file_type": "rationale", "source_file": "main/utils/vector.py", "source_location": "L29", - "community": 13, + "community": 104, "norm_label": "vectorized cosine similarity: one query against n embeddings.", "id": "utils_vector_rationale_29" }, @@ -45704,7 +48935,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L11", - "community": 131, + "community": 184, "norm_label": "testpackunpack", "id": "tests_test_vector_utils_testpackunpack" }, @@ -45713,7 +48944,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L12", - "community": 131, + "community": 184, "norm_label": ".test_roundtrip()", "id": "tests_test_vector_utils_testpackunpack_test_roundtrip" }, @@ -45722,7 +48953,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L20", - "community": 131, + "community": 184, "norm_label": ".test_empty()", "id": "tests_test_vector_utils_testpackunpack_test_empty" }, @@ -45731,7 +48962,7 @@ "file_type": "code", "source_file": "tests/test_vector_utils.py", "source_location": "L26", - "community": 131, + "community": 184, "norm_label": ".test_384_dims()", "id": "tests_test_vector_utils_testpackunpack_test_384_dims" }, @@ -45794,7 +49025,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L13", - "community": 131, + "community": 184, "norm_label": "pack \u2192 unpack preserves values.", "id": "tests_test_vector_utils_rationale_13" }, @@ -45803,7 +49034,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L21", - "community": 131, + "community": 184, "norm_label": "empty list roundtrips.", "id": "tests_test_vector_utils_rationale_21" }, @@ -45812,7 +49043,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L27", - "community": 131, + "community": 184, "norm_label": "384-dim vector packs to 1536 bytes.", "id": "tests_test_vector_utils_rationale_27" }, @@ -45866,7 +49097,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L68", - "community": 13, + "community": 104, "norm_label": "empty matrix \u2192 empty array.", "id": "tests_test_vector_utils_rationale_68" }, @@ -45875,7 +49106,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L73", - "community": 13, + "community": 104, "norm_label": "single row matches cosine_similarity.", "id": "tests_test_vector_utils_rationale_73" }, @@ -45884,7 +49115,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L80", - "community": 13, + "community": 104, "norm_label": "multiple rows ranked correctly.", "id": "tests_test_vector_utils_rationale_80" }, @@ -45893,7 +49124,7 @@ "file_type": "rationale", "source_file": "tests/test_vector_utils.py", "source_location": "L93", - "community": 13, + "community": 104, "norm_label": "zero query \u2192 all zeros.", "id": "tests_test_vector_utils_rationale_93" }, @@ -46235,7 +49466,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L937", - "community": 68, + "community": 172, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_937" }, @@ -46478,7 +49709,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L27", - "community": 68, + "community": 172, "norm_label": "cover __init__ and updatedates.", "id": "tests_test_prometheus_auth_coverage_rationale_27" }, @@ -46487,7 +49718,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L58", - "community": 68, + "community": 172, "norm_label": "cover sendmessage and streammessage in agent.py.", "id": "tests_test_prometheus_auth_coverage_rationale_58" }, @@ -46541,7 +49772,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L843", - "community": 68, + "community": 172, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_843" }, @@ -46550,7 +49781,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L26", - "community": 68, + "community": 172, "norm_label": "testprometheusgeneratorinit", "id": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" }, @@ -46559,7 +49790,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L57", - "community": 68, + "community": 172, "norm_label": "testprometheusgeneratorexecuteworkflow", "id": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" }, @@ -46784,7 +50015,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L1109", - "community": 68, + "community": 172, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_1109" }, @@ -46910,7 +50141,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L74", - "community": 105, + "community": 251, "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", "id": "tests_conftest_rationale_74" }, @@ -46919,7 +50150,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L99", - "community": 105, + "community": 251, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_99" }, @@ -46937,7 +50168,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L524", - "community": 498, + "community": 45, "norm_label": "covers line 19: get /user/health.", "id": "tests_test_controllers_coverage_rationale_524" }, @@ -46973,7 +50204,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L611", - "community": 178, + "community": 541, "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", "id": "tests_test_controllers_coverage_rationale_611" }, @@ -46982,7 +50213,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L614", - "community": 178, + "community": 541, "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", "id": "tests_test_controllers_coverage_rationale_614" }, @@ -47018,7 +50249,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L724", - "community": 104, + "community": 120, "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_724" }, @@ -47027,7 +50258,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L727", - "community": 104, + "community": 120, "norm_label": "covers lines 126, 131, 135-136.", "id": "tests_test_controllers_coverage_rationale_727" }, @@ -47036,7 +50267,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L754", - "community": 104, + "community": 120, "norm_label": "covers lines 127-129: session not found.", "id": "tests_test_controllers_coverage_rationale_754" }, @@ -47045,7 +50276,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L776", - "community": 104, + "community": 120, "norm_label": "covers lines 132-133: revokesession returns false.", "id": "tests_test_controllers_coverage_rationale_776" }, @@ -47072,7 +50303,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L832", - "community": 498, + "community": 45, "norm_label": "covers line 24: get /prometheus/health.", "id": "tests_test_controllers_coverage_rationale_832" }, @@ -47135,7 +50366,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L912", - "community": 104, + "community": 256, "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_912" }, @@ -47144,7 +50375,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L915", - "community": 104, + "community": 256, "norm_label": "covers lines 77, 86: session found with history.", "id": "tests_test_controllers_coverage_rationale_915" }, @@ -47153,7 +50384,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L959", - "community": 104, + "community": 256, "norm_label": "covers lines 83-84: session not found.", "id": "tests_test_controllers_coverage_rationale_959" }, @@ -47162,7 +50393,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L994", - "community": 231, + "community": 99, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_994" }, @@ -47171,7 +50402,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L997", - "community": 231, + "community": 99, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_997" }, @@ -47180,7 +50411,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1007", - "community": 231, + "community": 99, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1007" }, @@ -47189,7 +50420,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1017", - "community": 16, + "community": 148, "norm_label": "covers lines 114-115, 117-120, 122, 125: post /prometheus/chat.", "id": "tests_test_controllers_coverage_rationale_1017" }, @@ -47198,7 +50429,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1020", - "community": 16, + "community": 99, "norm_label": "covers lines 111-112: sessionid is none, new session created.", "id": "tests_test_controllers_coverage_rationale_1020" }, @@ -47207,7 +50438,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1038", - "community": 16, + "community": 148, "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", "id": "tests_test_controllers_coverage_rationale_1038" }, @@ -47216,7 +50447,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1079", - "community": 16, + "community": 148, "norm_label": "covers lines 114-115: session ownership check fails.", "id": "tests_test_controllers_coverage_rationale_1079" }, @@ -47225,7 +50456,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1116", - "community": 16, + "community": 148, "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", "id": "tests_test_controllers_coverage_rationale_1116" }, @@ -47234,7 +50465,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1134", - "community": 498, + "community": 511, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1134" }, @@ -47297,7 +50528,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1219", - "community": 563, + "community": 578, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1219" }, @@ -47306,7 +50537,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1222", - "community": 564, + "community": 584, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1222" }, @@ -47315,7 +50546,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1239", - "community": 568, + "community": 588, "norm_label": "covers line 27: user already has the role.", "id": "tests_test_controllers_coverage_rationale_1239" }, @@ -47324,7 +50555,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1254", - "community": 528, + "community": 568, "norm_label": "covers lines 19-20: user not found raises 404.", "id": "tests_test_controllers_coverage_rationale_1254" }, @@ -47351,7 +50582,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1298", - "community": 569, + "community": 592, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1298" }, @@ -47360,7 +50591,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1314", - "community": 546, + "community": 535, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1314" }, @@ -47369,7 +50600,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1331", - "community": 560, + "community": 544, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1331" }, @@ -47378,7 +50609,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1348", - "community": 561, + "community": 560, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1348" }, @@ -47387,7 +50618,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1372", - "community": 546, + "community": 535, "norm_label": "covers line 16: empty password raises valueerror.", "id": "tests_test_controllers_coverage_rationale_1372" }, @@ -47414,7 +50645,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1432", - "community": 498, + "community": 45, "norm_label": "covers line 13: usermanager.__init__.", "id": "tests_test_controllers_coverage_rationale_1432" }, @@ -47549,7 +50780,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L522", - "community": 498, + "community": 45, "norm_label": "covers line 19: get /user/health.", "id": "tests_test_controllers_coverage_rationale_522" }, @@ -47585,7 +50816,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L609", - "community": 178, + "community": 541, "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", "id": "tests_test_controllers_coverage_rationale_609" }, @@ -47594,7 +50825,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L612", - "community": 178, + "community": 541, "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", "id": "tests_test_controllers_coverage_rationale_612" }, @@ -47630,7 +50861,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L722", - "community": 104, + "community": 120, "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_722" }, @@ -47639,7 +50870,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L725", - "community": 104, + "community": 120, "norm_label": "covers lines 126, 131, 135-136.", "id": "tests_test_controllers_coverage_rationale_725" }, @@ -47648,7 +50879,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L752", - "community": 104, + "community": 120, "norm_label": "covers lines 127-129: session not found.", "id": "tests_test_controllers_coverage_rationale_752" }, @@ -47657,7 +50888,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L774", - "community": 104, + "community": 120, "norm_label": "covers lines 132-133: revokesession returns false.", "id": "tests_test_controllers_coverage_rationale_774" }, @@ -47684,7 +50915,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L830", - "community": 498, + "community": 45, "norm_label": "covers line 24: get /prometheus/health.", "id": "tests_test_controllers_coverage_rationale_830" }, @@ -47747,7 +50978,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L910", - "community": 104, + "community": 256, "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_910" }, @@ -47756,7 +50987,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L913", - "community": 104, + "community": 256, "norm_label": "covers lines 77, 86: session found with history.", "id": "tests_test_controllers_coverage_rationale_913" }, @@ -47765,7 +50996,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L957", - "community": 104, + "community": 256, "norm_label": "covers lines 83-84: session not found.", "id": "tests_test_controllers_coverage_rationale_957" }, @@ -47774,7 +51005,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L992", - "community": 231, + "community": 99, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_992" }, @@ -47783,7 +51014,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L995", - "community": 231, + "community": 99, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_995" }, @@ -47792,7 +51023,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1005", - "community": 231, + "community": 99, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1005" }, @@ -47801,7 +51032,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1015", - "community": 16, + "community": 148, "norm_label": "covers lines 114-115, 117-120, 122, 125: post /prometheus/chat.", "id": "tests_test_controllers_coverage_rationale_1015" }, @@ -47810,7 +51041,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1018", - "community": 16, + "community": 99, "norm_label": "covers lines 111-112: sessionid is none, new session created.", "id": "tests_test_controllers_coverage_rationale_1018" }, @@ -47819,7 +51050,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1036", - "community": 16, + "community": 148, "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", "id": "tests_test_controllers_coverage_rationale_1036" }, @@ -47828,7 +51059,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1078", - "community": 16, + "community": 148, "norm_label": "covers lines 114-115: session ownership check fails.", "id": "tests_test_controllers_coverage_rationale_1078" }, @@ -47837,7 +51068,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1115", - "community": 16, + "community": 148, "norm_label": "generic exception in chat propagates to fastapi's default 500 handler.", "id": "tests_test_controllers_coverage_rationale_1115" }, @@ -47846,7 +51077,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1133", - "community": 498, + "community": 511, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1133" }, @@ -47900,7 +51131,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1218", - "community": 563, + "community": 578, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1218" }, @@ -47909,7 +51140,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1221", - "community": 564, + "community": 584, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1221" }, @@ -47918,7 +51149,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1238", - "community": 568, + "community": 588, "norm_label": "covers line 27: user already has the role.", "id": "tests_test_controllers_coverage_rationale_1238" }, @@ -47927,7 +51158,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1253", - "community": 528, + "community": 568, "norm_label": "covers lines 19-20: user not found raises 404.", "id": "tests_test_controllers_coverage_rationale_1253" }, @@ -47954,7 +51185,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1297", - "community": 568, + "community": 588, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1297" }, @@ -47963,7 +51194,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1313", - "community": 546, + "community": 535, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1313" }, @@ -47972,7 +51203,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1330", - "community": 560, + "community": 544, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1330" }, @@ -47981,7 +51212,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1347", - "community": 561, + "community": 560, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1347" }, @@ -48044,7 +51275,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1431", - "community": 498, + "community": 45, "norm_label": "covers line 13: usermanager.__init__.", "id": "tests_test_controllers_coverage_rationale_1431" }, @@ -48368,7 +51599,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L229", - "community": 571, + "community": 603, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_229" }, @@ -48512,7 +51743,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L528", - "community": 86, + "community": 105, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_528" }, @@ -48521,7 +51752,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L550", - "community": 520, + "community": 3, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_550" }, @@ -48530,7 +51761,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L575", - "community": 86, + "community": 105, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_575" }, @@ -48620,7 +51851,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L843", - "community": 39, + "community": 188, "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", "id": "tests_test_stocks_api_coverage_rationale_843" }, @@ -48629,7 +51860,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L896", - "community": 39, + "community": 17, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_896" }, @@ -48647,7 +51878,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L918", - "community": 39, + "community": 17, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_918" }, @@ -48674,7 +51905,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L959", - "community": 17, + "community": 39, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_959" }, @@ -48692,7 +51923,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L975", - "community": 39, + "community": 17, "norm_label": "len(daterange) == 1 -> per-ticker closest snapshot.", "id": "tests_test_stocks_api_coverage_rationale_975" }, @@ -48755,7 +51986,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1216", - "community": 10, + "community": 529, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1216" }, @@ -48773,7 +52004,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1342", - "community": 587, + "community": 529, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1342" }, @@ -48782,7 +52013,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1392", - "community": 22, + "community": 562, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1392" }, @@ -48908,7 +52139,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1344", - "community": 587, + "community": 529, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1344" }, @@ -48917,7 +52148,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1394", - "community": 22, + "community": 562, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1394" }, @@ -49097,7 +52328,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1400", - "community": 587, + "community": 529, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1400" }, @@ -49106,7 +52337,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1468", - "community": 22, + "community": 562, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1468" }, @@ -49133,7 +52364,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L228", - "community": 571, + "community": 603, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_228" }, @@ -49277,7 +52508,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L527", - "community": 86, + "community": 105, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_527" }, @@ -49286,7 +52517,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L549", - "community": 520, + "community": 3, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_549" }, @@ -49295,7 +52526,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L574", - "community": 86, + "community": 105, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_574" }, @@ -49358,7 +52589,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L762", - "community": 28, + "community": 474, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_762" }, @@ -49412,7 +52643,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L917", - "community": 39, + "community": 17, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_917" }, @@ -49430,7 +52661,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L956", - "community": 17, + "community": 39, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_956" }, @@ -49448,7 +52679,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L972", - "community": 39, + "community": 17, "norm_label": "len(daterange) == 1 -> single date filter.", "id": "tests_test_stocks_api_coverage_rationale_972" }, @@ -49511,7 +52742,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1212", - "community": 10, + "community": 529, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1212" }, @@ -49529,7 +52760,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1396", - "community": 587, + "community": 529, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1396" }, @@ -49538,7 +52769,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1464", - "community": 22, + "community": 562, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1464" }, @@ -49565,7 +52796,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1388", - "community": 587, + "community": 529, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1388" }, @@ -49574,7 +52805,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1456", - "community": 22, + "community": 562, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1456" }, @@ -49655,7 +52886,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1210", - "community": 10, + "community": 529, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1210" }, @@ -49700,7 +52931,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L907", - "community": 39, + "community": 17, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_907" }, @@ -49718,7 +52949,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L946", - "community": 17, + "community": 39, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_946" }, @@ -49736,7 +52967,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L962", - "community": 39, + "community": 17, "norm_label": "len(daterange) == 1 -> single date filter.", "id": "tests_test_stocks_api_coverage_rationale_962" }, @@ -49799,7 +53030,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1191", - "community": 10, + "community": 529, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1191" }, @@ -50330,7 +53561,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1170", - "community": 10, + "community": 529, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1170" }, @@ -50375,7 +53606,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1141", - "community": 10, + "community": 529, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1141" }, @@ -50438,7 +53669,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L63", - "community": 169, + "community": 157, "norm_label": "getrealtimecotation()", "id": "controller_stocksapi_controller_getrealtimecotation" }, @@ -50456,7 +53687,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1148", - "community": 10, + "community": 529, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1148" }, @@ -50483,7 +53714,7 @@ "file_type": "code", "source_file": "main/app/prometheus/chat.py", "source_location": "L14", - "community": 68, + "community": 172, "norm_label": ".__init__()", "id": "prometheus_chat_prometheuschatmanager_init" }, @@ -50546,7 +53777,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L23", - "community": 169, + "community": 157, "norm_label": "apikeytest()", "id": "controller_stocksapi_controller_apikeytest" }, @@ -50600,7 +53831,7 @@ "file_type": "code", "source_file": "main/utils/http_session.py", "source_location": "L18", - "community": 512, + "community": 122, "norm_label": "cleanup()", "id": "utils_http_session_cleanup" }, @@ -50645,7 +53876,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L75", - "community": 105, + "community": 251, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_75" }, @@ -50654,7 +53885,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L20", - "community": 26, + "community": 504, "norm_label": "dbsession()", "id": "tests_test_api_key_quota_atomic_dbsession" }, @@ -50663,7 +53894,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L21", - "community": 26, + "community": 504, "norm_label": "create an in-memory sqlite database for testing.", "id": "tests_test_api_key_quota_atomic_rationale_21" }, @@ -50672,7 +53903,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L34", - "community": 26, + "community": 504, "norm_label": "sample api key data for tests.", "id": "tests_test_api_key_quota_atomic_rationale_34" }, @@ -50726,7 +53957,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L166", - "community": 26, + "community": 572, "norm_label": "test that invalid api key returns zero rows affected.", "id": "tests_test_api_key_quota_atomic_rationale_166" }, @@ -50735,7 +53966,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L180", - "community": 26, + "community": 572, "norm_label": "test that multiple api keys have independent quotas.", "id": "tests_test_api_key_quota_atomic_rationale_180" }, @@ -50870,7 +54101,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L148", - "community": 120, + "community": 45, "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", "id": "tests_test_controllers_coverage_rationale_148" }, @@ -50897,7 +54128,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L228", - "community": 120, + "community": 45, "norm_label": "covers lines 87-93, 102: login success and failure paths.", "id": "tests_test_controllers_coverage_rationale_228" }, @@ -51005,7 +54236,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L425", - "community": 120, + "community": 45, "norm_label": "covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googlecallba", "id": "tests_test_controllers_coverage_rationale_425" }, @@ -51041,7 +54272,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L567", - "community": 498, + "community": 45, "norm_label": "covers line 19: get /user/health.", "id": "tests_test_controllers_coverage_rationale_567" }, @@ -51077,7 +54308,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L654", - "community": 178, + "community": 541, "norm_label": "covers lines 66, 68-72, 74: get /user/sessions.", "id": "tests_test_controllers_coverage_rationale_654" }, @@ -51086,7 +54317,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L657", - "community": 178, + "community": 541, "norm_label": "covers lines 66, 68-72, 74: full sessions listing.", "id": "tests_test_controllers_coverage_rationale_657" }, @@ -51122,7 +54353,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L767", - "community": 104, + "community": 120, "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_767" }, @@ -51131,7 +54362,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L770", - "community": 104, + "community": 120, "norm_label": "covers lines 126, 131, 135-136.", "id": "tests_test_controllers_coverage_rationale_770" }, @@ -51140,7 +54371,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L797", - "community": 104, + "community": 120, "norm_label": "covers lines 127-129: session not found.", "id": "tests_test_controllers_coverage_rationale_797" }, @@ -51149,7 +54380,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L819", - "community": 104, + "community": 120, "norm_label": "covers lines 132-133: revokesession returns false.", "id": "tests_test_controllers_coverage_rationale_819" }, @@ -51176,7 +54407,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L875", - "community": 498, + "community": 45, "norm_label": "covers line 24: get /prometheus/health.", "id": "tests_test_controllers_coverage_rationale_875" }, @@ -51239,7 +54470,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L955", - "community": 104, + "community": 256, "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_955" }, @@ -51248,7 +54479,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L958", - "community": 104, + "community": 256, "norm_label": "covers lines 77, 86: session found with history.", "id": "tests_test_controllers_coverage_rationale_958" }, @@ -51257,7 +54488,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1002", - "community": 104, + "community": 256, "norm_label": "covers lines 83-84: session not found.", "id": "tests_test_controllers_coverage_rationale_1002" }, @@ -51266,7 +54497,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1037", - "community": 231, + "community": 99, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_1037" }, @@ -51275,7 +54506,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1040", - "community": 231, + "community": 99, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_1040" }, @@ -51284,7 +54515,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1050", - "community": 231, + "community": 99, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1050" }, @@ -51293,7 +54524,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1060", - "community": 16, + "community": 148, "norm_label": "covers lines 114-115, 117-120, 122, 125: post /prometheus/chat.", "id": "tests_test_controllers_coverage_rationale_1060" }, @@ -51302,7 +54533,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1063", - "community": 16, + "community": 99, "norm_label": "covers lines 111-112: sessionid is none, new session created.", "id": "tests_test_controllers_coverage_rationale_1063" }, @@ -51311,7 +54542,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1081", - "community": 16, + "community": 148, "norm_label": "covers lines 114-115, 117-120, 122: existing session with verified ownership.", "id": "tests_test_controllers_coverage_rationale_1081" }, @@ -51320,7 +54551,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1123", - "community": 16, + "community": 148, "norm_label": "covers lines 114-115: session ownership check fails.", "id": "tests_test_controllers_coverage_rationale_1123" }, @@ -51329,7 +54560,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1160", - "community": 16, + "community": 148, "norm_label": "covers line 125, 126-128: generic exception in chat.", "id": "tests_test_controllers_coverage_rationale_1160" }, @@ -51338,7 +54569,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1181", - "community": 498, + "community": 511, "norm_label": "covers line 18: get /stocks/health.", "id": "tests_test_controllers_coverage_rationale_1181" }, @@ -51401,7 +54632,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1280", - "community": 564, + "community": 584, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1280" }, @@ -51410,7 +54641,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1312", - "community": 528, + "community": 568, "norm_label": "covers lines 19-20: user not found raises 404.", "id": "tests_test_controllers_coverage_rationale_1312" }, @@ -51419,7 +54650,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1356", - "community": 569, + "community": 592, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1356" }, @@ -51428,7 +54659,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1406", - "community": 561, + "community": 560, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1406" }, @@ -51491,7 +54722,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1490", - "community": 498, + "community": 45, "norm_label": "covers line 13: usermanager.__init__.", "id": "tests_test_controllers_coverage_rationale_1490" }, @@ -51500,7 +54731,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L9", - "community": 186, + "community": 138, "norm_label": ".test_creates_new_session()", "id": "tests_test_http_session_coverage_testgetsession_test_creates_new_session" }, @@ -51509,7 +54740,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L28", - "community": 512, + "community": 122, "norm_label": "testcleanup", "id": "tests_test_http_session_coverage_testcleanup" }, @@ -51518,7 +54749,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L29", - "community": 512, + "community": 122, "norm_label": ".test_cleanup_closes_session()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_closes_session" }, @@ -51527,7 +54758,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L37", - "community": 512, + "community": 122, "norm_label": ".test_cleanup_no_session()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_no_session" }, @@ -51536,7 +54767,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L46", - "community": 512, + "community": 122, "norm_label": ".test_cleanup_exception_during_close()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_exception_during_close" }, @@ -51653,7 +54884,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L28", - "community": 68, + "community": 172, "norm_label": "cover __init__ and updatedates (lines 22-37).", "id": "tests_test_prometheus_auth_coverage_rationale_28" }, @@ -51662,7 +54893,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L59", - "community": 68, + "community": 172, "norm_label": "cover executeworkflow (lines 39-363).", "id": "tests_test_prometheus_auth_coverage_rationale_59" }, @@ -51797,7 +55028,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_auth_coverage.py", "source_location": "L1110", - "community": 68, + "community": 172, "norm_label": "cover getgooglesso (lines 6-14).", "id": "tests_test_prometheus_auth_coverage_rationale_1110" }, @@ -51914,7 +55145,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L175", - "community": 172, + "community": 122, "norm_label": "testconcurrenthttpproxy", "id": "tests_test_thread_safety_testconcurrenthttpproxy" }, @@ -51923,7 +55154,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L178", - "community": 172, + "community": 122, "norm_label": ".test_proxy_returns_thread_local_sessions()", "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_proxy_returns_thread_local_sessions" }, @@ -51932,7 +55163,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L203", - "community": 172, + "community": 122, "norm_label": ".test_connectivity_uses_getsession()", "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_connectivity_uses_getsession" }, @@ -51941,7 +55172,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L204", - "community": 172, + "community": 122, "norm_label": "connectivity.checkserviceconnection must call getsession(), not use a global ses", "id": "tests_test_thread_safety_rationale_204" }, @@ -51950,7 +55181,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L227", - "community": 571, + "community": 603, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_227" }, @@ -52094,7 +55325,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L526", - "community": 86, + "community": 105, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_526" }, @@ -52103,7 +55334,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L548", - "community": 520, + "community": 3, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_548" }, @@ -52112,7 +55343,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L573", - "community": 86, + "community": 105, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_573" }, @@ -52175,7 +55406,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L761", - "community": 28, + "community": 474, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_761" }, @@ -52193,7 +55424,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L831", - "community": 39, + "community": 188, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_831" }, @@ -52220,7 +55451,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L906", - "community": 39, + "community": 17, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_906" }, @@ -52265,7 +55496,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L961", - "community": 39, + "community": 17, "norm_label": "len(daterange) == 1 -> single date filter.", "id": "tests_test_stocks_api_coverage_rationale_961" }, @@ -52436,7 +55667,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L757", - "community": 28, + "community": 474, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_757" }, @@ -52463,7 +55694,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L827", - "community": 39, + "community": 188, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_827" }, @@ -52481,7 +55712,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L898", - "community": 39, + "community": 17, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_898" }, @@ -52508,7 +55739,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L937", - "community": 17, + "community": 39, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_937" }, @@ -52535,7 +55766,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L756", - "community": 28, + "community": 474, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_756" }, @@ -52553,7 +55784,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L826", - "community": 39, + "community": 188, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_826" }, @@ -52562,7 +55793,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L874", - "community": 46, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_874" }, @@ -52580,7 +55811,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L935", - "community": 17, + "community": 39, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_935" }, @@ -52598,7 +55829,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L951", - "community": 39, + "community": 17, "norm_label": "len(daterange) == 1 -> single date filter.", "id": "tests_test_stocks_api_coverage_rationale_951" }, @@ -52670,7 +55901,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L710", - "community": 28, + "community": 474, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_710" }, @@ -52688,7 +55919,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L780", - "community": 39, + "community": 188, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_780" }, @@ -52715,7 +55946,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L850", - "community": 39, + "community": 17, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_850" }, @@ -52733,7 +55964,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L889", - "community": 17, + "community": 39, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_889" }, @@ -52751,7 +55982,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L8", - "community": 596, + "community": 59, "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", "id": "tests_test_connectivity_coverage_rationale_8" }, @@ -52760,7 +55991,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L105", - "community": 595, + "community": 59, "norm_label": "checkserviceconnection \u2014 success, not found, errors.", "id": "tests_test_connectivity_coverage_rationale_105" }, @@ -52769,7 +56000,7 @@ "file_type": "rationale", "source_file": "tests/test_status_endpoint.py", "source_location": "L9", - "community": 184, + "community": 84, "norm_label": "create a test client for the status endpoint without running lifespan.", "id": "tests_test_status_endpoint_rationale_9" }, @@ -52841,7 +56072,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L711", - "community": 28, + "community": 474, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_711" }, @@ -52859,7 +56090,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L781", - "community": 39, + "community": 188, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_781" }, @@ -52877,7 +56108,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L851", - "community": 39, + "community": 17, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_851" }, @@ -52904,7 +56135,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L890", - "community": 17, + "community": 39, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_890" }, @@ -52931,7 +56162,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L27", - "community": 530, + "community": 33, "norm_label": "_build_error_response()", "id": "utils_errors_build_error_response" }, @@ -52940,7 +56171,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L37", - "community": 530, + "community": 33, "norm_label": "http_exception_handler()", "id": "utils_errors_http_exception_handler" }, @@ -52949,7 +56180,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L44", - "community": 530, + "community": 33, "norm_label": "validation_exception_handler()", "id": "utils_errors_validation_exception_handler" }, @@ -52958,7 +56189,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L56", - "community": 530, + "community": 33, "norm_label": "generic_exception_handler()", "id": "utils_errors_generic_exception_handler" }, @@ -52967,7 +56198,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L65", - "community": 104, + "community": 120, "norm_label": "register_error_handlers()", "id": "utils_errors_register_error_handlers" }, @@ -52976,7 +56207,7 @@ "file_type": "code", "source_file": "main/utils/http_session.py", "source_location": "L9", - "community": 580, + "community": 122, "norm_label": "get_session()", "id": "utils_http_session_get_session" }, @@ -52985,7 +56216,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L10", - "community": 580, + "community": 122, "norm_label": "return a requests.session for the current thread. sessions are created la", "id": "utils_http_session_rationale_10" }, @@ -52994,7 +56225,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L23", - "community": 512, + "community": 122, "norm_label": "close the main thread's session at interpreter shutdown.", "id": "utils_http_session_rationale_23" }, @@ -53003,7 +56234,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L203", - "community": 172, + "community": 122, "norm_label": ".test_connectivity_uses_get_session()", "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_connectivity_uses_get_session" }, @@ -53399,7 +56630,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L9", - "community": 580, + "community": 122, "norm_label": "return a requests.session for the current thread. sessions are created la", "id": "utils_http_session_rationale_9" }, @@ -53417,7 +56648,7 @@ "file_type": "code", "source_file": "main/app/user/user.py", "source_location": "L12", - "community": 498, + "community": 45, "norm_label": ".__init__()", "id": "user_user_usermanager_init" }, @@ -53777,7 +57008,7 @@ "file_type": "rationale", "source_file": "main/utils/errors.py", "source_location": "L68", - "community": 104, + "community": 120, "norm_label": "register exception handlers on the fastapi app. note: httpexception and r", "id": "utils_errors_rationale_68" }, @@ -53894,7 +57125,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L522", - "community": 86, + "community": 105, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_522" }, @@ -53948,7 +57179,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L705", - "community": 28, + "community": 474, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_705" }, @@ -53975,7 +57206,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L775", - "community": 39, + "community": 188, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_775" }, @@ -53993,7 +57224,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L845", - "community": 39, + "community": 17, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_845" }, @@ -54029,7 +57260,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L900", - "community": 39, + "community": 17, "norm_label": "len(daterange) == 1 -> single date filter.", "id": "tests_test_stocks_api_coverage_rationale_900" }, @@ -54038,7 +57269,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L62", - "community": 105, + "community": 251, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_62" }, @@ -54047,7 +57278,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L61", - "community": 105, + "community": 251, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_61" }, @@ -54056,7 +57287,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L57", - "community": 105, + "community": 251, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_57" }, @@ -54065,7 +57296,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L49", - "community": 105, + "community": 251, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_49" }, @@ -54335,7 +57566,7 @@ "file_type": "document", "source_file": "CODE_REVIEW_REPORT.md", "source_location": "L217", - "community": 538, + "community": 587, "norm_label": "category 8: testing gaps (medium)", "id": "server_code_review_report_category_8_testing_gaps_medium" }, @@ -54344,7 +57575,7 @@ "file_type": "document", "source_file": "CODE_REVIEW_REPORT.md", "source_location": "L219", - "community": 538, + "community": 587, "norm_label": "issue 8.1 \u2014 no integration tests for full request lifecycle", "id": "server_code_review_report_issue_8_1_no_integration_tests_for_full_request_lifecycle" }, @@ -54353,7 +57584,7 @@ "file_type": "document", "source_file": "CODE_REVIEW_REPORT.md", "source_location": "L223", - "community": 538, + "community": 587, "norm_label": "issue 8.2 \u2014 no tests for scraper, stocks query, or cache", "id": "server_code_review_report_issue_8_2_no_tests_for_scraper_stocks_query_or_cache" }, @@ -54362,7 +57593,7 @@ "file_type": "document", "source_file": "CODE_REVIEW_REPORT.md", "source_location": "L230", - "community": 538, + "community": 587, "norm_label": "issue 8.3 \u2014 no tests for google oauth callback", "id": "server_code_review_report_issue_8_3_no_tests_for_google_oauth_callback" }, @@ -54371,7 +57602,7 @@ "file_type": "document", "source_file": "CODE_REVIEW_REPORT.md", "source_location": "L234", - "community": 538, + "community": 587, "norm_label": "issue 8.4 \u2014 no tests for session cleanup", "id": "server_code_review_report_issue_8_4_no_tests_for_session_cleanup" }, @@ -54434,7 +57665,7 @@ "file_type": "rationale", "source_file": "main/utils/errors.py", "source_location": "L67", - "community": 104, + "community": 120, "norm_label": "register exception handlers on the fastapi app. note: httpexception and r", "id": "utils_errors_rationale_67" }, @@ -54605,7 +57836,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L135", - "community": 590, + "community": 574, "norm_label": "testqueryoptimization", "id": "tests_test_stocks_cache_testqueryoptimization" }, @@ -54614,7 +57845,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L138", - "community": 590, + "community": 574, "norm_label": ".test_all_optimizations_present()", "id": "tests_test_stocks_cache_testqueryoptimization_test_all_optimizations_present" }, @@ -54623,7 +57854,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L153", - "community": 590, + "community": 574, "norm_label": ".test_query_filter_uses_optimization()", "id": "tests_test_stocks_cache_testqueryoptimization_test_query_filter_uses_optimization" }, @@ -54695,7 +57926,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L299", - "community": 502, + "community": 563, "norm_label": "testfilterbysearchterms", "id": "tests_test_stocks_cache_testfilterbysearchterms" }, @@ -54704,7 +57935,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L302", - "community": 502, + "community": 563, "norm_label": ".test_filter_with_tickerindex()", "id": "tests_test_stocks_cache_testfilterbysearchterms_test_filter_with_tickerindex" }, @@ -54875,7 +58106,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L136", - "community": 590, + "community": 574, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_cache_rationale_136" }, @@ -54884,7 +58115,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L139", - "community": 590, + "community": 574, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_cache_rationale_139" }, @@ -54893,7 +58124,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L154", - "community": 590, + "community": 574, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_cache_rationale_154" }, @@ -54965,7 +58196,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L300", - "community": 502, + "community": 563, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_cache_rationale_300" }, @@ -54974,7 +58205,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L303", - "community": 502, + "community": 563, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_cache_rationale_303" }, @@ -55163,7 +58394,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L138", - "community": 590, + "community": 574, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_cache_rationale_138" }, @@ -55172,7 +58403,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L141", - "community": 590, + "community": 574, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_cache_rationale_141" }, @@ -55181,7 +58412,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L156", - "community": 590, + "community": 574, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_cache_rationale_156" }, @@ -55253,7 +58484,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L302", - "community": 502, + "community": 563, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_cache_rationale_302" }, @@ -55262,7 +58493,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L305", - "community": 502, + "community": 563, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_cache_rationale_305" }, @@ -55352,7 +58583,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L304", - "community": 502, + "community": 563, "norm_label": ".test_filter_with_tickerindex()", "id": "tests_test_stocks_cache_testfilterbysearchterms_test_filter_with_tickerIndex" }, @@ -55361,7 +58592,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L1", - "community": 183, + "community": 101, "norm_label": "test_stocks_optimization.py", "id": "tests_test_stocks_optimization_py" }, @@ -55424,7 +58655,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L72", - "community": 101, + "community": 498, "norm_label": "testquerycaching", "id": "tests_test_stocks_optimization_testquerycaching" }, @@ -55433,7 +58664,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L75", - "community": 101, + "community": 498, "norm_label": ".test_cache_manager_has_caches_method()", "id": "tests_test_stocks_optimization_testquerycaching_test_cache_manager_has_caches_method" }, @@ -55442,7 +58673,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L83", - "community": 101, + "community": 498, "norm_label": ".test_querycache_ttl_configuration()", "id": "tests_test_stocks_optimization_testquerycaching_test_queryCache_ttl_configuration" }, @@ -55451,7 +58682,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L91", - "community": 101, + "community": 498, "norm_label": ".test_get_cached_stocks_respects_columns_parameter()", "id": "tests_test_stocks_optimization_testquerycaching_test_get_cached_stocks_respects_columns_parameter" }, @@ -55460,7 +58691,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L101", - "community": 101, + "community": 498, "norm_label": ".test_different_queries_not_cached()", "id": "tests_test_stocks_optimization_testquerycaching_test_different_queries_not_cached" }, @@ -55469,7 +58700,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L105", - "community": 101, + "community": 498, "norm_label": ".test_cache_expiry_after_ttl()", "id": "tests_test_stocks_optimization_testquerycaching_test_cache_expiry_after_ttl" }, @@ -55478,7 +58709,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L111", - "community": 183, + "community": 101, "norm_label": "testconnectionpool", "id": "tests_test_stocks_optimization_testconnectionpool" }, @@ -55487,7 +58718,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L114", - "community": 183, + "community": 101, "norm_label": ".test_stocks_engine_has_pool_configuration()", "id": "tests_test_stocks_optimization_testconnectionpool_test_stocks_engine_has_pool_configuration" }, @@ -55496,7 +58727,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L123", - "community": 183, + "community": 101, "norm_label": "testlazydeserialization", "id": "tests_test_stocks_optimization_testlazydeserialization" }, @@ -55505,7 +58736,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L126", - "community": 183, + "community": 101, "norm_label": ".test_query_manager_has_deserialize_method()", "id": "tests_test_stocks_optimization_testlazydeserialization_test_query_manager_has_deserialize_method" }, @@ -55514,7 +58745,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L137", - "community": 183, + "community": 595, "norm_label": "testqueryoptimization", "id": "tests_test_stocks_optimization_testqueryoptimization" }, @@ -55523,7 +58754,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L140", - "community": 183, + "community": 595, "norm_label": ".test_all_optimizations_present()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_all_optimizations_present" }, @@ -55532,7 +58763,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L155", - "community": 183, + "community": 595, "norm_label": ".test_query_filter_uses_optimization()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_query_filter_uses_optimization" }, @@ -55541,7 +58772,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L173", - "community": 42, + "community": 136, "norm_label": "testperformancebenchmarks", "id": "tests_test_stocks_optimization_testperformancebenchmarks" }, @@ -55550,7 +58781,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L176", - "community": 42, + "community": 136, "norm_label": ".test_tickerindex_lookup_performance()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_tickerIndex_lookup_performance" }, @@ -55559,7 +58790,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L196", - "community": 42, + "community": 136, "norm_label": ".test_prefix_scan_performance()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_prefix_scan_performance" }, @@ -55568,7 +58799,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L216", - "community": 42, + "community": 136, "norm_label": ".test_index_lookup_vs_scan_comparison()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_index_lookup_vs_scan_comparison" }, @@ -55577,7 +58808,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L246", - "community": 42, + "community": 136, "norm_label": ".test_querycache_performance()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_queryCache_performance" }, @@ -55586,7 +58817,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L268", - "community": 42, + "community": 136, "norm_label": ".test_column_projection_performance()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_column_projection_performance" }, @@ -55595,7 +58826,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L283", - "community": 42, + "community": 136, "norm_label": ".test_cache_initialization_time()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_cache_initialization_time" }, @@ -55604,7 +58835,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L301", - "community": 183, + "community": 101, "norm_label": "testfilterbysearchterms", "id": "tests_test_stocks_optimization_testfilterbysearchterms" }, @@ -55613,7 +58844,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L304", - "community": 183, + "community": 101, "norm_label": ".test_filter_with_tickerindex()", "id": "tests_test_stocks_optimization_testfilterbysearchterms_test_filter_with_tickerIndex" }, @@ -55622,7 +58853,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L310", - "community": 183, + "community": 101, "norm_label": "testqueryperformance", "id": "tests_test_stocks_optimization_testqueryperformance" }, @@ -55631,7 +58862,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L313", - "community": 183, + "community": 101, "norm_label": ".test_query_response_time_under_1_second()", "id": "tests_test_stocks_optimization_testqueryperformance_test_query_response_time_under_1_second" }, @@ -55694,7 +58925,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L73", - "community": 101, + "community": 498, "norm_label": "tests for query result caching", "id": "tests_test_stocks_optimization_rationale_73" }, @@ -55703,7 +58934,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L76", - "community": 101, + "community": 498, "norm_label": "cachemanager should track cached queries", "id": "tests_test_stocks_optimization_rationale_76" }, @@ -55712,7 +58943,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L84", - "community": 101, + "community": 498, "norm_label": "query cache should have configurable ttl", "id": "tests_test_stocks_optimization_rationale_84" }, @@ -55721,7 +58952,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L92", - "community": 101, + "community": 498, "norm_label": "getcachedstocks should support column filtering", "id": "tests_test_stocks_optimization_rationale_92" }, @@ -55730,7 +58961,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L102", - "community": 101, + "community": 498, "norm_label": "different query parameters should not share cache", "id": "tests_test_stocks_optimization_rationale_102" }, @@ -55739,7 +58970,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L106", - "community": 101, + "community": 498, "norm_label": "cache should expire after ttl", "id": "tests_test_stocks_optimization_rationale_106" }, @@ -55748,7 +58979,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L112", - "community": 183, + "community": 101, "norm_label": "tests for connection pool configuration", "id": "tests_test_stocks_optimization_rationale_112" }, @@ -55757,7 +58988,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L115", - "community": 183, + "community": 101, "norm_label": "stocks engine should have optimized pool settings", "id": "tests_test_stocks_optimization_rationale_115" }, @@ -55766,7 +58997,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L124", - "community": 183, + "community": 101, "norm_label": "tests for lazy json deserialization", "id": "tests_test_stocks_optimization_rationale_124" }, @@ -55775,7 +59006,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L127", - "community": 183, + "community": 101, "norm_label": "query manager should have deserialize method", "id": "tests_test_stocks_optimization_rationale_127" }, @@ -55784,7 +59015,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L138", - "community": 183, + "community": 595, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_optimization_rationale_138" }, @@ -55793,7 +59024,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L141", - "community": 183, + "community": 595, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_optimization_rationale_141" }, @@ -55802,7 +59033,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L156", - "community": 183, + "community": 595, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_optimization_rationale_156" }, @@ -55811,7 +59042,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L174", - "community": 42, + "community": 136, "norm_label": "performance benchmark tests for stocks api", "id": "tests_test_stocks_optimization_rationale_174" }, @@ -55820,7 +59051,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L177", - "community": 42, + "community": 136, "norm_label": "ticker index lookup should be o(1) - very fast", "id": "tests_test_stocks_optimization_rationale_177" }, @@ -55829,7 +59060,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L197", - "community": 42, + "community": 136, "norm_label": "prefix scan should be much slower than index lookup", "id": "tests_test_stocks_optimization_rationale_197" }, @@ -55838,7 +59069,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L217", - "community": 42, + "community": 136, "norm_label": "index lookup should be significantly faster than scan", "id": "tests_test_stocks_optimization_rationale_217" }, @@ -55847,7 +59078,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L247", - "community": 42, + "community": 136, "norm_label": "query cache should avoid recomputation", "id": "tests_test_stocks_optimization_rationale_247" }, @@ -55856,7 +59087,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L269", - "community": 42, + "community": 136, "norm_label": "column projection should reduce memory and time", "id": "tests_test_stocks_optimization_rationale_269" }, @@ -55865,7 +59096,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L284", - "community": 42, + "community": 136, "norm_label": "cache initialization should complete in reasonable time", "id": "tests_test_stocks_optimization_rationale_284" }, @@ -55874,7 +59105,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L302", - "community": 183, + "community": 101, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_optimization_rationale_302" }, @@ -55883,7 +59114,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L305", - "community": 183, + "community": 101, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_optimization_rationale_305" }, @@ -55892,7 +59123,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L311", - "community": 183, + "community": 101, "norm_label": "performance tests for query operations", "id": "tests_test_stocks_optimization_rationale_311" }, @@ -55901,7 +59132,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L314", - "community": 183, + "community": 101, "norm_label": "query should respond within 1 second", "id": "tests_test_stocks_optimization_rationale_314" }, @@ -55919,7 +59150,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L173", - "community": 183, + "community": 101, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_optimization_rationale_173" }, @@ -55928,7 +59159,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L176", - "community": 183, + "community": 101, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_optimization_rationale_176" }, @@ -55937,7 +59168,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L182", - "community": 183, + "community": 101, "norm_label": "performance tests for query operations", "id": "tests_test_stocks_optimization_rationale_182" }, @@ -55946,7 +59177,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L185", - "community": 183, + "community": 101, "norm_label": "query should respond within 1 second", "id": "tests_test_stocks_optimization_rationale_185" }, @@ -56373,7 +59604,7 @@ "label": "Pytest Testing", "file_type": "rationale", "source_file": "pyproject.toml", - "community": 251, + "community": 138, "norm_label": "pytest testing", "id": "pytest" }, @@ -57000,32 +60231,32 @@ { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/service/authentication_service.py", - "source_location": "L2", + "source_file": "main/service/scraper_service.py", + "source_location": "L7", "weight": 0.8, "confidence_score": 0.5, "source": "server_config_config", - "target": "service_authentication_service_authenticationservice" + "target": "service_scraper_service_scraperservice" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/service/scraper_service.py", - "source_location": "L7", + "source_file": "main/utils/logging_config.py", + "source_location": "L6", "weight": 0.8, "confidence_score": 0.5, "source": "server_config_config", - "target": "service_scraper_service_scraperservice" + "target": "utils_logging_config_discordhandler" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/utils/logging_config.py", - "source_location": "L6", + "source_file": "main/service/authentication_service.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, "source": "server_config_config", - "target": "utils_logging_config_discordhandler" + "target": "service_authentication_service_authenticationservice" }, { "relation": "uses", @@ -65348,6 +68579,16 @@ "source": "main_app_stocks_api_cache_py", "target": "stocks_api_cache_buildtickerindex" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L206", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_readfeatherdataframe" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -65474,6 +68715,17 @@ "source": "stocks_api_cache_rationale_191", "target": "stocks_api_cache_buildtickerindex" }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L238", + "weight": 1.0, + "confidence_score": 1.0, + "source": "stocks_api_cache_stockscachemanager_loadfromfeather", + "target": "stocks_api_cache_readfeatherdataframe" + }, { "relation": "method", "confidence": "EXTRACTED", @@ -66350,6 +69602,17 @@ "source": "stocks_api_cache_stockscachemanager_loadfromfeather", "target": "stocks_api_compress_rebuildabbrevs" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L255", + "weight": 1.0, + "source": "stocks_api_cache_stockscachemanager_loadfromfeather", + "target": "stocks_api_sync_cache_clearendpointcache" + }, { "relation": "calls", "context": "call", @@ -67742,6 +71005,16 @@ "source": "main_app_stocks_api_sync_cache_py", "target": "stocks_api_sync_cache_cache" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/sync_cache.py", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_sync_cache_py", + "target": "stocks_api_sync_cache_clearendpointcache" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -67752,6 +71025,16 @@ "source": "main_app_stocks_api_sync_cache_py", "target": "stocks_api_sync_cache_sync_cache" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/sync_cache.py", + "source_location": "L38", + "weight": 1.0, + "confidence_score": 1.0, + "source": "stocks_api_sync_cache_rationale_38", + "target": "stocks_api_sync_cache_clearendpointcache" + }, { "relation": "imports_from", "context": "import", @@ -69643,10 +72926,10 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L39", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_39", + "source": "controller_stocksapi_controller_rationale_45", "target": "controller_stocksapi_controller_listfields" }, { @@ -69659,6 +72942,16 @@ "source": "controller_stocksapi_controller_rationale_47", "target": "controller_stocksapi_controller_listfields" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_39", + "target": "controller_stocksapi_controller_listfields" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -69744,10 +73037,10 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L95", + "source_location": "L102", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_95", + "source": "controller_stocksapi_controller_rationale_102", "target": "controller_stocksapi_controller_gethistorical" }, { @@ -69760,6 +73053,16 @@ "source": "controller_stocksapi_controller_rationale_103", "target": "controller_stocksapi_controller_gethistorical" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L95", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_95", + "target": "controller_stocksapi_controller_gethistorical" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -69855,10 +73158,10 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L160", + "source_location": "L167", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_160", + "source": "controller_stocksapi_controller_rationale_167", "target": "controller_stocksapi_controller_getfundamental" }, { @@ -69875,40 +73178,40 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L157", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_157", + "source": "controller_stocksapi_controller_rationale_160", "target": "controller_stocksapi_controller_getfundamental" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L161", + "source_location": "L157", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_161", + "source": "controller_stocksapi_controller_rationale_157", "target": "controller_stocksapi_controller_getfundamental" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L169", + "source_location": "L161", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_169", + "source": "controller_stocksapi_controller_rationale_161", "target": "controller_stocksapi_controller_getfundamental" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L167", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_167", + "source": "controller_stocksapi_controller_rationale_169", "target": "controller_stocksapi_controller_getfundamental" }, { @@ -69976,10 +73279,10 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L228", + "source_location": "L235", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_228", + "source": "controller_stocksapi_controller_rationale_235", "target": "controller_stocksapi_controller_getcotations" }, { @@ -69992,6 +73295,16 @@ "source": "controller_stocksapi_controller_rationale_236", "target": "controller_stocksapi_controller_getcotations" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L228", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_228", + "target": "controller_stocksapi_controller_getcotations" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -70087,10 +73400,10 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L282", + "source_location": "L289", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_282", + "source": "controller_stocksapi_controller_rationale_289", "target": "controller_stocksapi_controller_getlivecotation" }, { @@ -70103,6 +73416,16 @@ "source": "controller_stocksapi_controller_rationale_290", "target": "controller_stocksapi_controller_getlivecotation" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L282", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_282", + "target": "controller_stocksapi_controller_getlivecotation" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -73862,5626 +77185,9036 @@ "target": "tests_test_controllers_coverage_testissecurescheme" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testhealthendpoint" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testhealthendpoint" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testregisterendpoint" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testloginendpoint" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testlogoutendpoint" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgooglelogin" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgooglecallback" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testuserhealth" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgetme" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testupgradeendpoints" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testadminaccess" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgetsessions" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgetcurrentsession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testrevokesession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testrevokeallsessions" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheushealth" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheusgetsessions" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheuscreatesession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheusgethistory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheusdeletesession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testprometheuschat" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_teststocksapihealth" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_teststocksapikeytest" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_teststocksapihistorical" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_teststocksapifundamental" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_teststocksapigeneratekey" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testaddroletouser" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testgetcurrentuser" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testhashpasswordempty" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testverifyaccesstoken" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testmanagerinit" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_scheduler_py", + "target": "utils_scheduler_getsharedscheduler" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L42", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_scheduler_py", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_rationale_1", + "target": "main_utils_scheduler_py" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L50", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_registerjob", + "target": "utils_scheduler_getsharedscheduler" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_rationale_33", + "target": "utils_scheduler_getsharedscheduler" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L70", + "weight": 1.0, + "source": "service_prometheus_service_initialize", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/user_service.py", + "source_location": "L55", + "weight": 1.0, + "source": "service_user_service_registersessioncleanupjobs", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L69", + "weight": 1.0, + "source": "service_prometheus_service_registermemorymaintenancejob", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_rationale_43", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "fastapi" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "utils_service_manager_getapp" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L48", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "utils_service_manager_runall" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L16", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "utils_service_manager_servicemanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L64", + "weight": 1.0, + "source": "service_prometheus_service_initialize", + "target": "utils_service_manager_getapp" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L12", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_models_loader_py", + "target": "models_loader_getembeddingmodel" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_models_loader_py", + "target": "models_loader_embed" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_models_loader_py", + "target": "models_loader_downloadmodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/vector.py", + "source_location": "L11", + "weight": 1.0, + "source": "prometheus_vector_embed", + "target": "models_loader_getembeddingmodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L12", + "weight": 1.0, + "source": "service_prometheus_service_initialize", + "target": "models_loader_getembeddingmodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_loader_getembeddingmodel", + "target": "models_loader_embed" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_loader_getembeddingmodel", + "target": "models_loader_downloadmodel" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_py", + "target": "migrations_env_getdatabaseurl" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_py", + "target": "migrations_env_runmigrationsoffline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_py", + "target": "migrations_env_runmigrationsonline" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_getdatabaseurl", + "target": "migrations_env_runmigrationsoffline" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_getdatabaseurl", + "target": "migrations_env_runmigrationsonline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_25af7ad931e7_initial_migration_py", + "target": "versions_25af7ad931e7_initial_migration_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", + "source_location": "L61", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_25af7ad931e7_initial_migration_py", + "target": "versions_25af7ad931e7_initial_migration_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_25af7ad931e7_initial_migration_py", + "target": "versions_25af7ad931e7_initial_migration_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", + "target": "versions_4a2f1c9e3b5d_user_sessions_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", + "target": "versions_4a2f1c9e3b5d_user_sessions_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", + "target": "versions_4a2f1c9e3b5d_user_sessions_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", + "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", + "source_location": "L50", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", + "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", + "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_1" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", + "source_location": "L44", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_9f3b339dde20_drop_unused_user_sessions_columns_upgrade", + "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_44" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", + "source_location": "L51", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_9f3b339dde20_drop_unused_user_sessions_columns_downgrade", + "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_51" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/add_access_token_hash.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_add_access_token_hash_py", + "target": "versions_add_access_token_hash_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/add_access_token_hash.py", + "source_location": "L54", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_add_access_token_hash_py", + "target": "versions_add_access_token_hash_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/add_access_token_hash.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_add_access_token_hash_py", + "target": "versions_add_access_token_hash_rationale_1" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/add_access_token_hash.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_add_access_token_hash_upgrade", + "target": "versions_add_access_token_hash_rationale_22" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/add_access_token_hash.py", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_add_access_token_hash_downgrade", + "target": "versions_add_access_token_hash_rationale_55" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", + "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", + "source_location": "L50", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", + "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_downgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", + "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_fix_partial" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", + "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", + "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", + "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", + "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d3df3fc5ca72_rename_memory_base_score_py", + "target": "versions_d3df3fc5ca72_rename_memory_base_score_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d3df3fc5ca72_rename_memory_base_score_py", + "target": "versions_d3df3fc5ca72_rename_memory_base_score_downgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", + "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", + "source_location": "L36", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", + "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", + "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py", + "target": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", + "source_location": "L45", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py", + "target": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_rationale_1", + "target": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py", + "target": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py", + "target": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_rationale_1", + "target": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", + "target": "versions_f1a2b3c4d5e6_session_gc_index_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", + "target": "versions_f1a2b3c4d5e6_session_gc_index_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_f1a2b3c4d5e6_session_gc_index_rationale_1", + "target": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py", + "target": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py", + "target": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_rationale_1", + "target": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_project_overview" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L4", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_dev_commands" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L23", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_architecture" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_testing" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L38", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_graphify" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_swarm_delegation_default" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_stocks_api_pandas_first_pattern" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L54", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_scraper_b3_xango_batch_data_pipeline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_auth_users_dual_layer_session_security" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_key_quirks" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L57", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_prometheus_ai_chat_strengths_gaps" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_agents_dev_commands", + "target": "server_agents_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L31", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_agents_dev_commands", + "target": "server_agents_ci_pipeline_order" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "readme_md", + "target": "server_readme_mansa_server" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_run_with_docker" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_environment_setup" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L85", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_health_check" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L91", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_license" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_run_with_docker", + "target": "server_readme_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_environment_setup", + "target": "server_readme_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L87", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_health_check", + "target": "server_readme_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "todo_md", + "target": "server_todo_priorities_active_order_2026_09_29" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "todo_md", + "target": "server_todo_user_structure_defined_by_string_roles" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_user" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_premium" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_developer" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L67", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_stocks_api" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L70", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_prometheus" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_md", + "target": "docs_authentication_authentication_management" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_token_session_lifetime" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_token_extraction_order" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_cookie_handling_conditional_secure" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_session_data_model_family_only" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_roles_and_permissions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L61", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_rate_limits" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_api_endpoints" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L117", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_security_features" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L138", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_not_implemented" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L154", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_workflow" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L187", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_license" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_usage" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L130", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_device_detection" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L144", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_session_management" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L51", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_health_check" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L57", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_user_registration" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_user_login" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L84", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_logout" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_oauth2_login" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L120", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_callback_cookie_only" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L77", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_profile_me" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L108", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_callback" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L76", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_health_check", + "target": "docs_authentication_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L52", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_health_check", + "target": "docs_authentication_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_usage", + "target": "docs_authentication_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L84", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_user_registration", + "target": "docs_authentication_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L59", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_user_registration", + "target": "docs_authentication_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_user_login", + "target": "docs_authentication_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L67", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_user_login", + "target": "docs_authentication_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L104", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_logout", + "target": "docs_authentication_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L86", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_logout", + "target": "docs_authentication_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L113", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_7" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L104", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_8" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L79", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_profile_me", + "target": "docs_authentication_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L144", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_workflow", + "target": "docs_authentication_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L156", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_workflow", + "target": "docs_authentication_codeblock_9" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_md", + "target": "docs_orunmila_orunmila" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_usage" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_workflow" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_api_endpoints" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L72", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_license" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_usage", + "target": "docs_orunmila_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_usage", + "target": "docs_orunmila_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/orunmila.md", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_orunmila_workflow", + "target": "docs_orunmila_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_md", + "target": "docs_scraper_b3_b3_market_scraper" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_md", + "target": "docs_scraper_b3_brazilian_stocks_market_scraper" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_sources_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L19", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L31", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_xango_score_main_app_scraper_b3_xango_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_outputs" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36", + "target": "docs_scraper_b3_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/scraper_b3.md", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_scraper_b3_usage", + "target": "docs_scraper_b3_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_md", + "target": "docs_stocks_api_brazilian_stocks_market_api" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_usage" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_auth" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_api_endpoints" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L90", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_response_format" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L119", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_architecture" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L113", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_license" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_usage", + "target": "docs_stocks_api_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_health_check" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_field_discovery" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_historical_data" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L72", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_fundamental_data" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L74", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_cotations_10_year_daily_history" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L87", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_live_price" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_mcp_ai_agent_tools" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_api_key_verification" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L45", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_key_management" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_health_check", + "target": "docs_stocks_api_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L42", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_field_discovery", + "target": "docs_stocks_api_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_key_verification", + "target": "docs_stocks_api_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L50", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L68", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_key_management", + "target": "docs_stocks_api_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L63", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L74", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_7" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L86", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_8" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L76", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_cotations_10_year_daily_history", + "target": "docs_stocks_api_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L89", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_live_price", + "target": "docs_stocks_api_codeblock_7" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L106", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_response_format", + "target": "docs_stocks_api_codeblock_8" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_response_format", + "target": "docs_stocks_api_codeblock_9" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_md", + "target": "docs_user_user_management" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_roles_and_permissions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_api_endpoints" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L59", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_session_management" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L112", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_api_keys_stocks_api" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L123", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_rate_limits_related_services" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L135", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_not_implemented" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L156", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_workflow" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L177", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_license" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L140", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_permission_system" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L19", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_api_endpoints", + "target": "docs_user_health_check" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_api_endpoints", + "target": "docs_user_get_profile" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_api_endpoints", + "target": "docs_user_admin_access" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_api_endpoints", + "target": "docs_user_upgrade_to_developer_starter" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_api_endpoints", + "target": "docs_user_upgrade_to_developer_enterprise" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_health_check", + "target": "docs_user_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_get_profile", + "target": "docs_user_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L31", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_get_profile", + "target": "docs_user_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_admin_access", + "target": "docs_user_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_admin_access", + "target": "docs_user_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L63", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_session_management", + "target": "docs_user_list_all_sessions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L92", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_session_management", + "target": "docs_user_get_current_session" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L114", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_session_management", + "target": "docs_user_revoke_a_session" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L127", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_session_management", + "target": "docs_user_revoke_all_sessions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L59", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_7" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L69", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_8" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_upgrade_to_developer_starter", + "target": "docs_user_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_upgrade_to_developer_enterprise", + "target": "docs_user_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L83", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_9" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_10" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L91", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_7" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L116", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_11" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L120", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_12" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L101", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_8" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L105", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_9" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L129", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_13" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L133", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_14" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L141", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_workflow", + "target": "docs_user_codeblock_10" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L158", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_user_workflow", + "target": "docs_user_codeblock_16" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_investidor10_wallet_research_md", + "target": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L10", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_1_feature_inventory_nav_structure" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_2_user_lifecycle_end_to_end" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_3_wallet_api_reference" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L74", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_5_product_logic" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L82", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-research.md", + "source_location": "L86", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "superpowers_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_investidor10_wallet_spec_md", + "target": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L12", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_1_requirements" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L38", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_2_domain_model" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L66", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L72", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L81", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L121", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "superpowers_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L14", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_1_requirements", + "target": "superpowers_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_1_requirements", + "target": "superpowers_investidor10_wallet_spec_1_2_non_functional" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L87", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_1_db_migrations_user_db_contested_7_1_3_actions_incl_one_destructive_autogenerate_risk" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_2_stocks_price_access_confirmed_extended_7_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L100", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_3_wiring_auth_tests_contested_7_3_mounting_true_gating_test_seams_missing" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L106", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_contested_7_4_data_present_source_staleness_gaps" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L110", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_5_ordered_actions_before_p1_code" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L85", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_1_db_migrations_user_db_ready_2_actions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L92", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_2_stocks_price_access_ready_for_full_series_one_new_helper_needed" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_3_wiring_auth_tests_ready" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L104", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "superpowers_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_ready_public_sources_only" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L125", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", + "target": "superpowers_investidor10_wallet_spec_7_1_db_migrations_6_1_contested_3_actions_one_destructive_risk" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L133", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", + "target": "superpowers_investidor10_wallet_spec_7_2_stocks_price_access_6_2_confirmed_incomplete" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L143", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", + "target": "superpowers_investidor10_wallet_spec_7_3_wiring_auth_tests_6_3_contested_mounting_true" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L150", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", + "target": "superpowers_investidor10_wallet_spec_7_4_scraper_pipeline_6_4_contested" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/investidor10-wallet-spec.md", + "source_location": "L159", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_investidor10_wallet_spec_7_independent_re_verification_swarm_s4_2026_09_29_corrections_to_6", + "target": "superpowers_investidor10_wallet_spec_7_5_revised_pre_p1_actions_supersedes_6_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L64", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_part_1_implementation_plan" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L347", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_part_2_benchmark_plan" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L510", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L661", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_open_decisions_blocking_or_product_owned" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L669", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_nginx_scaling_plan_md", + "target": "superpowers_nginx_scaling_plan_next_actions_not_in_scope_here" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution", + "target": "superpowers_nginx_scaling_plan_0_purpose_and_constraints" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution", + "target": "superpowers_nginx_scaling_plan_0_1_rev_2_do_first_app_cache_ttl_increase_fields_cache_no_nginx_no_redis" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L66", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_1_architecture_decision" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L79", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_2_file_layout" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L96", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L152", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L251", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L277", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L309", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_7_phase_p4_handoff_design_no_code_in_this_plan" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L320", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_8_quota_rate_limit_semantics_after_caching" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L332", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_9_anti_scraping_note_todo_17" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L336", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_1_implementation_plan", + "target": "superpowers_nginx_scaling_plan_1_10_edge_cases_risks_implementation" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L82", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_2_file_layout", + "target": "superpowers_nginx_scaling_plan_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", + "target": "superpowers_nginx_scaling_plan_codeblock_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L118", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", + "target": "superpowers_nginx_scaling_plan_codeblock_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L139", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", + "target": "superpowers_nginx_scaling_plan_codeblock_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L155", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", + "target": "superpowers_nginx_scaling_plan_codeblock_5" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L186", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", + "target": "superpowers_nginx_scaling_plan_codeblock_6" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L242", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", + "target": "superpowers_nginx_scaling_plan_codeblock_7" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L257", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive", + "target": "superpowers_nginx_scaling_plan_codeblock_8" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L279", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy", + "target": "superpowers_nginx_scaling_plan_codeblock_9" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L291", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy", + "target": "superpowers_nginx_scaling_plan_codeblock_10" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L349", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_0_grounding_what_the_code_actually_does" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L381", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_1_hypotheses" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L390", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_2_tooling" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L440", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_3_scenarios" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L452", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_4_protocol" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L463", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_5_metrics" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L467", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_6_acceptance_thresholds_all_proposed_freeze_after_first_real_run" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L484", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_7_results_doc_layout" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L493", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_8_feeding_status_todo_14" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L499", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_2_benchmark_plan", + "target": "superpowers_nginx_scaling_plan_2_9_benchmark_risks" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L393", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_2_2_tooling", + "target": "superpowers_nginx_scaling_plan_codeblock_11" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L406", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_2_2_tooling", + "target": "superpowers_nginx_scaling_plan_codeblock_12" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L414", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_2_2_tooling", + "target": "superpowers_nginx_scaling_plan_codeblock_13" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L420", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_2_2_tooling", + "target": "superpowers_nginx_scaling_plan_codeblock_14" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L431", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_2_2_tooling", + "target": "superpowers_nginx_scaling_plan_codeblock_15" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L486", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_2_7_results_doc_layout", + "target": "superpowers_nginx_scaling_plan_codeblock_16" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L512", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_0_verified_ground_truth" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L529", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_1_target_topology" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L546", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_2_worker_container_extraction" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L563", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L584", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_4_todo_13_migration_drop_service_host_service_port" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L591", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_5_redis_exactly_two_jobs" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L607", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_6_cache_strategy_across_boxes" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L613", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_7_autoscaling_story_todo_11" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L618", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_8_forgevm_interplay_todo_12" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L622", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_9_risk_register" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testregisterendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L642", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "superpowers_nginx_scaling_plan_3_10_migration_sequence_verification" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testloginendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L534", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_3_1_target_topology", + "target": "superpowers_nginx_scaling_plan_codeblock_17" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testlogoutendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/nginx-scaling-plan.md", + "source_location": "L567", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan", + "target": "superpowers_nginx_scaling_plan_codeblock_18" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgooglelogin" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_uvicorn_worker_scaling_plan_md", + "target": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgooglecallback" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_uvicorn_worker_scaling_plan_md", + "target": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testuserhealth" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_uvicorn_worker_scaling_plan_md", + "target": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetme" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_0_the_blockers_ranked" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testupgradeendpoints" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_1_verified_state_compact" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testadminaccess" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L52", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetsessions" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L135", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_3_rulings_conflicts_i_adjudicated" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetcurrentsession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L147", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_4_design_spec_alignment_2026_09_29_nginx_scaling_design_md" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testrevokesession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L162", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_5_sequencing_verification_and_bans" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testrevokeallsessions" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L174", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_6_options_demoted" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheushealth" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L186", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_7_risks" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusgetsessions" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L200", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_migration_\u00e2_what_must_change", + "target": "superpowers_uvicorn_worker_scaling_plan_8_evidence_index" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheuscreatesession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L54", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b1_\u00e2_startup_and_process_model_must_fix" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L67", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b2_\u00e2_cache_under_n_1_must_fix" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusgethistory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L79", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b3_\u00e2_db_pools_must_fix_at_n\u00e2_3_on_one_server" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusdeletesession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b4_\u00e2_migrations_must_fix" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheuschat" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L107", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b5_\u00e2_per_process_state_ranked_scope_by_service" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapihealth" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L123", + "weight": 1.0, + "confidence_score": 1.0, + "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", + "target": "superpowers_uvicorn_worker_scaling_plan_b6_\u00e2_deployment_glue_must_build" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapikeytest" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_superpowers_plans_2026_08_09_sse_resume_md", + "target": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapihistorical" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan", + "target": "plans_2026_08_09_sse_resume_global_constraints" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapifundamental" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapigeneratekey" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L242", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testaddroletouser" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L412", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetcurrentuser" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L576", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testhashpasswordempty" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L863", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testverifyaccesstoken" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_1" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L130", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_2" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testmanagerinit" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L235", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L32", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L257", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_scheduler_py", - "target": "utils_scheduler_getsharedscheduler" + "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", + "target": "plans_2026_08_09_sse_resume_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L42", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L329", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_scheduler_py", - "target": "utils_scheduler_registerjob" + "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", + "target": "plans_2026_08_09_sse_resume_codeblock_5" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L405", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_1", - "target": "main_utils_scheduler_py" + "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", + "target": "plans_2026_08_09_sse_resume_codeblock_6" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L50", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L426", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_registerjob", - "target": "utils_scheduler_getsharedscheduler" + "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", + "target": "plans_2026_08_09_sse_resume_codeblock_7" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L33", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L498", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_33", - "target": "utils_scheduler_getsharedscheduler" + "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", + "target": "plans_2026_08_09_sse_resume_codeblock_8" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L70", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L569", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", + "target": "plans_2026_08_09_sse_resume_codeblock_9" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/user_service.py", - "source_location": "L55", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L590", "weight": 1.0, - "source": "service_user_service_registersessioncleanupjobs", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_10" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L69", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L659", "weight": 1.0, - "source": "service_prometheus_service_registermemorymaintenancejob", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_11" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L681", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_43", - "target": "utils_scheduler_registerjob" + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_12" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L8", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L768", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "fastapi" + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L835", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_getapp" + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L48", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L856", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_runall" + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L16", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L889", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_servicemanager" + "source": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off", + "target": "plans_2026_08_09_sse_resume_codeblock_16" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L64", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L1", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "utils_service_manager_getapp" + "confidence_score": 1.0, + "source": "docs_superpowers_plans_2026_08_15_stocks_api_perf_md", + "target": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L12", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_getembeddingmodel" + "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", + "target": "plans_2026_08_15_stocks_api_perf_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_embed" + "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", + "target": "plans_2026_08_15_stocks_api_perf_file_structure" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L11", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L633", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_downloadmodel" + "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", + "target": "plans_2026_08_15_stocks_api_perf_self_review" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/vector.py", - "source_location": "L11", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L35", "weight": 1.0, - "source": "prometheus_vector_embed", - "target": "models_loader_getembeddingmodel" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L12", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L251", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "models_loader_getembeddingmodel" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L392", "weight": 1.0, "confidence_score": 1.0, - "source": "models_loader_getembeddingmodel", - "target": "models_loader_embed" + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L468", "weight": 1.0, "confidence_score": 1.0, - "source": "models_loader_getembeddingmodel", - "target": "models_loader_downloadmodel" + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L613", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_py", - "target": "migrations_env_getdatabaseurl" + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_5_full_verification_graphify_update" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L28", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_py", - "target": "migrations_env_runmigrationsoffline" + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L39", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_py", - "target": "migrations_env_runmigrationsonline" + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_2" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L30", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_getdatabaseurl", - "target": "migrations_env_runmigrationsoffline" + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_3" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L41", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_getdatabaseurl", - "target": "migrations_env_runmigrationsonline" + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L177", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_upgrade" + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L61", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L228", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_downgrade" + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_6" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L244", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_rationale_1" + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L20", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L263", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_upgrade" + "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L47", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L315", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_downgrade" + "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_9" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L349", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_rationale_1" + "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L405", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", - "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_upgrade" + "source": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L50", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L461", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", - "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_downgrade" + "source": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_12" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L482", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", - "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_1" + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_13" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L44", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L512", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_9f3b339dde20_drop_unused_user_sessions_columns_upgrade", - "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_44" + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_14" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L51", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L519", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_9f3b339dde20_drop_unused_user_sessions_columns_downgrade", - "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_51" + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L539", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_upgrade" + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L54", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L548", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_downgrade" + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_17" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L606", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_18" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_rationale_1" + "source": "docs_superpowers_plans_2026_08_15_workspace_endpoints_md", + "target": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_add_access_token_hash_upgrade", - "target": "versions_add_access_token_hash_rationale_22" + "source": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan", + "target": "plans_2026_08_15_workspace_endpoints_global_constraints" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L55", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L632", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_add_access_token_hash_downgrade", - "target": "versions_add_access_token_hash_rationale_55" + "source": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan", + "target": "plans_2026_08_15_workspace_endpoints_self_review" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_upgrade" + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L50", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_downgrade" + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L60", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_fix_partial" + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L465", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_rationale_1" + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L611", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", - "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_upgrade" + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_5_full_verification" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L27", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", - "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_downgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_1" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", - "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_rationale_1" + "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", - "source_location": "L17", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3df3fc5ca72_rename_memory_base_score_py", - "target": "versions_d3df3fc5ca72_rename_memory_base_score_upgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3df3fc5ca72_rename_memory_base_score_py", - "target": "versions_d3df3fc5ca72_rename_memory_base_score_downgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L172", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_upgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L36", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L180", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_downgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_6" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L191", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_rationale_1" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L212", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py", - "target": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_upgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L45", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L368", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py", - "target": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_downgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_9" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L375", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_rationale_1", - "target": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L381", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py", - "target": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_upgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", - "source_location": "L26", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L458", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py", - "target": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_downgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_12" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L479", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_13" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L560", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_rationale_1", - "target": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py" + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L26", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L566", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", - "target": "versions_f1a2b3c4d5e6_session_gc_index_upgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L34", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L593", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", - "target": "versions_f1a2b3c4d5e6_session_gc_index_downgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_16" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L604", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_f1a2b3c4d5e6_session_gc_index_rationale_1", - "target": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py" + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L626", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py", - "target": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_upgrade" + "source": "plans_2026_08_15_workspace_endpoints_task_5_full_verification", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py", - "target": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_downgrade" + "source": "docs_superpowers_plans_2026_08_15_workspace_frontend_md", + "target": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_rationale_1", - "target": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py" + "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", + "target": "plans_2026_08_15_workspace_frontend_backend_contract_source_of_truth_for_api_js" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_project_overview" + "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", + "target": "plans_2026_08_15_workspace_frontend_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L4", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_dev_commands" + "source": "plans_2026_08_15_workspace_frontend_global_constraints", + "target": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L23", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L176", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_architecture" + "source": "plans_2026_08_15_workspace_frontend_global_constraints", + "target": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L34", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L294", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_testing" + "source": "plans_2026_08_15_workspace_frontend_global_constraints", + "target": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L38", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L403", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_graphify" + "source": "plans_2026_08_15_workspace_frontend_global_constraints", + "target": "plans_2026_08_15_workspace_frontend_task_4_docker_restart_e2e_of_prometheus_chat_stream_performed_by_controller_not_a_subagent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L60", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_swarm_delegation_default" + "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", + "target": "plans_2026_08_15_workspace_frontend_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L47", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_stocks_api_pandas_first_pattern" + "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", + "target": "plans_2026_08_15_workspace_frontend_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L54", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_scraper_b3_xango_batch_data_pipeline" + "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", + "target": "plans_2026_08_15_workspace_frontend_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L60", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L191", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_auth_users_dual_layer_session_security" + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L28", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L246", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_key_quirks" + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L57", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L272", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_prometheus_ai_chat_strengths_gaps" + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L287", "weight": 1.0, "confidence_score": 1.0, - "source": "server_agents_dev_commands", - "target": "server_agents_codeblock_1" + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L31", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L308", "weight": 1.0, "confidence_score": 1.0, - "source": "server_agents_dev_commands", - "target": "server_agents_ci_pipeline_order" + "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", + "target": "plans_2026_08_15_workspace_frontend_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L372", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_md", - "target": "server_readme_mansa_server" + "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", + "target": "plans_2026_08_15_workspace_frontend_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L396", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_run_with_docker" + "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", + "target": "plans_2026_08_15_workspace_frontend_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L20", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_environment_setup" + "source": "docs_superpowers_plans_2026_08_17_openui_migration_md", + "target": "plans_2026_08_17_openui_migration_openui_migration_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L85", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_health_check" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L91", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_license" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_file_structure" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_run_with_docker", - "target": "server_readme_codeblock_1" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L24", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_environment_setup", - "target": "server_readme_codeblock_2" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L87", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L385", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_health_check", - "target": "server_readme_codeblock_3" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L455", "weight": 1.0, "confidence_score": 1.0, - "source": "todo_md", - "target": "server_todo_user_structure_defined_by_string_roles" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L34", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L610", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_user" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_5_integration_test" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L37", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L640", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_premium" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_verification_checklist" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L40", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_developer" + "source": "plans_2026_08_17_openui_migration_file_structure", + "target": "plans_2026_08_17_openui_migration_frontend_local_only_never_committed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L67", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_stocks_api" + "source": "plans_2026_08_17_openui_migration_file_structure", + "target": "plans_2026_08_17_openui_migration_backend_commit" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L70", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_prometheus" + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_md", - "target": "docs_authentication_authentication_management" + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_token_session_lifetime" + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L11", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_token_extraction_order" + "source": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library", + "target": "plans_2026_08_17_openui_migration_component_mapping" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_cookie_handling_conditional_secure" + "source": "plans_2026_08_17_openui_migration_component_mapping", + "target": "plans_2026_08_17_openui_migration_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L30", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L339", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_session_data_model_family_only" + "source": "plans_2026_08_17_openui_migration_component_mapping", + "target": "plans_2026_08_17_openui_migration_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L39", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L396", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_roles_and_permissions" + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L61", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L428", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_rate_limits" + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L435", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_api_endpoints" + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L117", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L442", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_security_features" + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L138", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L449", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_not_implemented" + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L154", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L467", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_workflow" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L187", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L486", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_license" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L501", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_usage" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L130", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L542", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_device_detection" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L144", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L555", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_session_management" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L51", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L572", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_health_check" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L57", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L577", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_user_registration" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L65", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L590", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_user_login" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L84", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L596", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_logout" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L94", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L602", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_oauth2_login" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_20" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L120", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L614", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_callback_cookie_only" + "source": "plans_2026_08_17_openui_migration_task_5_integration_test", + "target": "plans_2026_08_17_openui_migration_codeblock_21" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L77", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L620", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_profile_me" + "source": "plans_2026_08_17_openui_migration_task_5_integration_test", + "target": "plans_2026_08_17_openui_migration_codeblock_22" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L108", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_callback" + "source": "docs_superpowers_plans_2026_09_03_followup_hardening_md", + "target": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L76", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_health_check", - "target": "docs_authentication_codeblock_1" + "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", + "target": "plans_2026_09_03_followup_hardening_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L52", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_health_check", - "target": "docs_authentication_codeblock_2" + "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", + "target": "plans_2026_09_03_followup_hardening_file_map" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L11", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L814", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_usage", - "target": "docs_authentication_codeblock_1" + "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", + "target": "plans_2026_09_03_followup_hardening_self_review" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L84", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_registration", - "target": "docs_authentication_codeblock_2" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L59", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_registration", - "target": "docs_authentication_codeblock_3" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L94", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L240", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_login", - "target": "docs_authentication_codeblock_3" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L67", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L337", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_login", - "target": "docs_authentication_codeblock_4" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L104", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L415", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_logout", - "target": "docs_authentication_codeblock_4" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L86", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L509", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_logout", - "target": "docs_authentication_codeblock_6" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L113", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L562", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_5" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L98", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L623", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_7" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L104", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L712", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_8" + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L79", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_profile_me", - "target": "docs_authentication_codeblock_5" + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L144", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_workflow", - "target": "docs_authentication_codeblock_6" + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L156", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L96", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_workflow", - "target": "docs_authentication_codeblock_9" + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_research_md", - "target": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa" + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L10", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L143", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "docs_investidor10_wallet_research_1_feature_inventory_nav_structure" + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L30", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "docs_investidor10_wallet_research_2_user_lifecycle_end_to_end" + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L40", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "docs_investidor10_wallet_research_3_wallet_api_reference" + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L65", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L204", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "docs_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access" + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L74", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L233", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "docs_investidor10_wallet_research_5_product_logic" + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L82", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L256", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "docs_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact" + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-research.md", - "source_location": "L86", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L284", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", - "target": "docs_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches" + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L298", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_spec_md", - "target": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec" + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L12", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L330", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "docs_investidor10_wallet_spec_1_requirements" + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L38", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L351", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "docs_investidor10_wallet_spec_2_domain_model" + "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", + "target": "plans_2026_09_03_followup_hardening_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L390", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "docs_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" + "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", + "target": "plans_2026_09_03_followup_hardening_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L66", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L408", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "docs_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase" + "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", + "target": "plans_2026_09_03_followup_hardening_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L72", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L429", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", - "target": "docs_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact" + "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", + "target": "plans_2026_09_03_followup_hardening_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L14", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L451", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_spec_1_requirements", - "target": "docs_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield" + "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", + "target": "plans_2026_09_03_followup_hardening_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/investidor10-wallet-spec.md", - "source_location": "L28", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L502", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_investidor10_wallet_spec_1_requirements", - "target": "docs_investidor10_wallet_spec_1_2_non_functional" + "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", + "target": "plans_2026_09_03_followup_hardening_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L525", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_md", - "target": "docs_orunmila_orunmila" + "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", + "target": "plans_2026_09_03_followup_hardening_codeblock_20" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L541", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_usage" + "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", + "target": "plans_2026_09_03_followup_hardening_codeblock_21" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L53", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L555", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_workflow" + "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", + "target": "plans_2026_09_03_followup_hardening_codeblock_22" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L65", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L577", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_api_endpoints" + "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", + "target": "plans_2026_09_03_followup_hardening_codeblock_23" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L72", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L598", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_license" + "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", + "target": "plans_2026_09_03_followup_hardening_codeblock_24" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L616", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_usage", - "target": "docs_orunmila_codeblock_1" + "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", + "target": "plans_2026_09_03_followup_hardening_codeblock_25" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L640", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_usage", - "target": "docs_orunmila_codeblock_2" + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_26" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L55", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L668", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_workflow", - "target": "docs_orunmila_codeblock_3" + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_27" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L676", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_md", - "target": "docs_scraper_b3_b3_market_scraper" + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_28" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L705", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_md", - "target": "docs_scraper_b3_brazilian_stocks_market_scraper" + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_29" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L731", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_sources_6" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_30" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L19", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L753", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_31" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L31", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L769", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_xango_score_main_app_scraper_b3_xango_py" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_32" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L41", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L780", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_outputs" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_33" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L807", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36", - "target": "docs_scraper_b3_codeblock_1" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_34" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L8", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_usage", - "target": "docs_scraper_b3_codeblock_1" + "source": "docs_superpowers_plans_2026_09_04_wallet_management_md", + "target": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_md", - "target": "docs_stocks_api_brazilian_stocks_market_api" + "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", + "target": "plans_2026_09_04_wallet_management_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_usage" + "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", + "target": "plans_2026_09_04_wallet_management_file_structure" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_auth" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L32", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_api_endpoints" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L90", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L269", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_response_format" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L119", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L391", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_architecture" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L113", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L567", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_license" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L720", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_usage", - "target": "docs_stocks_api_codeblock_1" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L34", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L869", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_health_check" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L40", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1000", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_field_discovery" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L53", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1115", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_historical_data" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L72", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1224", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_fundamental_data" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L74", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1325", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_cotations_10_year_daily_history" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L87", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1482", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_live_price" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L98", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1618", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_mcp_ai_agent_tools" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L40", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L73", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_api_key_verification" + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L45", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_key_management" + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L35", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_health_check", - "target": "docs_stocks_api_codeblock_2" + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L42", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_field_discovery", - "target": "docs_stocks_api_codeblock_3" + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L41", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_key_verification", - "target": "docs_stocks_api_codeblock_3" + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L50", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_4" + "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", + "target": "plans_2026_09_04_wallet_management_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L55", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L248", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_5" + "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", + "target": "plans_2026_09_04_wallet_management_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L68", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L262", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_6" + "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", + "target": "plans_2026_09_04_wallet_management_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L47", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L281", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_key_management", - "target": "docs_stocks_api_codeblock_4" + "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", + "target": "plans_2026_09_04_wallet_management_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L63", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L325", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_5" + "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", + "target": "plans_2026_09_04_wallet_management_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L74", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L384", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_7" + "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", + "target": "plans_2026_09_04_wallet_management_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L86", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L404", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_8" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L76", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L471", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_cotations_10_year_daily_history", - "target": "docs_stocks_api_codeblock_6" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L89", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L524", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_live_price", - "target": "docs_stocks_api_codeblock_7" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L106", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L560", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_response_format", - "target": "docs_stocks_api_codeblock_8" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L94", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L580", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_response_format", - "target": "docs_stocks_api_codeblock_9" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L649", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_md", - "target": "docs_user_user_management" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L659", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_roles_and_permissions" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L17", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L693", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_api_endpoints" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L59", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L713", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_session_management" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_20" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L112", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L732", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_api_keys_stocks_api" + "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", + "target": "plans_2026_09_04_wallet_management_codeblock_21" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L123", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L804", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_rate_limits_related_services" + "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", + "target": "plans_2026_09_04_wallet_management_codeblock_22" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L135", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L862", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_not_implemented" + "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", + "target": "plans_2026_09_04_wallet_management_codeblock_23" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L156", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L882", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_workflow" + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_24" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L177", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L944", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_license" + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_25" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L140", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L972", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_permission_system" + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_26" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L19", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L993", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_health_check" + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_27" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1013", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_get_profile" + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_28" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L53", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1062", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_admin_access" + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_29" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L41", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1095", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_upgrade_to_developer_starter" + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_30" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L47", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1108", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_upgrade_to_developer_enterprise" + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_31" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L20", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1143", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_health_check", - "target": "docs_user_codeblock_1" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_32" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L27", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1157", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_profile", - "target": "docs_user_codeblock_2" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_33" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L31", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1165", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_profile", - "target": "docs_user_codeblock_3" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_34" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L39", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1192", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_admin_access", - "target": "docs_user_codeblock_3" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_35" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L55", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1217", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_admin_access", - "target": "docs_user_codeblock_6" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_36" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L63", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1237", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_list_all_sessions" + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_37" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L92", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1276", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_get_current_session" + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_38" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L114", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1299", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_revoke_a_session" + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_39" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L127", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1318", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_revoke_all_sessions" + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_40" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L55", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1341", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_4" + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_41" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L59", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1397", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_5" + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_42" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L65", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1419", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_7" + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_43" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L69", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1452", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_8" + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_44" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1475", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_upgrade_to_developer_starter", - "target": "docs_user_codeblock_4" + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_45" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1496", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_upgrade_to_developer_enterprise", - "target": "docs_user_codeblock_5" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_46" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L83", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1512", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_6" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_47" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L94", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1528", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_9" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_48" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L98", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1546", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_10" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_49" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L91", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1582", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_7" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_50" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L116", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1613", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_11" + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_51" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L120", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1635", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_12" + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_52" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L101", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1661", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_8" + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_53" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L105", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1686", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_9" + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_54" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L129", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1727", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_13" + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_55" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L133", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_14" + "source": "docs_superpowers_plans_2026_09_12_artifact_removal_cache_verdict_md", + "target": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L141", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_workflow", - "target": "docs_user_codeblock_10" + "source": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan", + "target": "plans_2026_09_12_artifact_removal_cache_verdict_part_1_deletions_safe_no_live_referrers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L158", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_workflow", - "target": "docs_user_codeblock_16" + "source": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan", + "target": "plans_2026_09_12_artifact_removal_cache_verdict_part_2_cache_verdict_keep_the_dict_skip_cashews" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_09_sse_resume_md", - "target": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan" + "source": "docs_superpowers_plans_2026_09_14_memory_postgres_pgvector_plan_md", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_memory_postgres_pgvector_migration_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L11", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan", - "target": "plans_2026_08_09_sse_resume_global_constraints" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_memory_postgres_pgvector_migration_implementation_plan", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L26", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L242", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L412", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L139", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L576", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_4_full_test_sweep_18_suites_postgres_ci_parity" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L863", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_5_docs_close" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L41", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", - "target": "plans_2026_08_09_sse_resume_codeblock_1" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L130", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", - "target": "plans_2026_08_09_sse_resume_codeblock_2" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L235", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", - "target": "plans_2026_08_09_sse_resume_codeblock_3" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L257", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L97", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", - "target": "plans_2026_08_09_sse_resume_codeblock_4" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L329", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", - "target": "plans_2026_08_09_sse_resume_codeblock_5" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L405", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", - "target": "plans_2026_08_09_sse_resume_codeblock_6" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L426", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", - "target": "plans_2026_08_09_sse_resume_codeblock_7" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L498", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", - "target": "plans_2026_08_09_sse_resume_codeblock_8" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_5_docs_close", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L569", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", - "target": "plans_2026_08_09_sse_resume_codeblock_9" + "source": "docs_superpowers_plans_2026_09_15_adopt_libs_md", + "target": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L590", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_10" + "source": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan", + "target": "plans_2026_09_15_adopt_libs_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L659", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_11" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L681", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_12" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_2_cashews_native_probe_first" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L768", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_13" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_3_pydantic_validates_llm_extraction_json" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L835", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L102", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_14" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_4_sse_starlette_replaces_hand_sse_bus" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L856", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_15" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_5_rapidfuzz_memory_key_dedup" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L889", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L132", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off", - "target": "plans_2026_08_09_sse_resume_codeblock_16" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_6_cachetools_bounds_token_cache" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L143", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_15_stocks_api_perf_md", - "target": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_7_user_agents_fills_device_fields_optional" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", - "target": "plans_2026_08_15_stocks_api_perf_global_constraints" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_8_pytest_plugin_set" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L23", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", - "target": "plans_2026_08_15_stocks_api_perf_file_structure" + "source": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries", + "target": "plans_2026_09_15_adopt_libs_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L633", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", - "target": "plans_2026_08_15_stocks_api_perf_self_review" + "source": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries", + "target": "plans_2026_09_15_adopt_libs_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L35", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh" + "source": "plans_2026_09_15_adopt_libs_task_2_cashews_native_probe_first", + "target": "plans_2026_09_15_adopt_libs_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L251", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries" + "source": "plans_2026_09_15_adopt_libs_task_3_pydantic_validates_llm_extraction_json", + "target": "plans_2026_09_15_adopt_libs_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L392", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def" + "source": "docs_superpowers_plans_2026_09_29_nginx_response_cache_md", + "target": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L468", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path" + "source": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan", + "target": "plans_2026_09_29_nginx_response_cache_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L613", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_5_full_verification_graphify_update" + "source": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan", + "target": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L375", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_1" + "source": "plans_2026_09_29_nginx_response_cache_nginx_response_cache_implementation_plan", + "target": "plans_2026_09_29_nginx_response_cache_execution_handoff" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L88", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_2" + "source": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L118", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L183", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_3" + "source": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L131", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L302", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_4" + "source": "plans_2026_09_29_nginx_response_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L177", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_5" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L228", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L62", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_6" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L244", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_7" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L263", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_8" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L315", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L116", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_9" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L349", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_10" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L405", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_11" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L461", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_12" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L482", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L176", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_13" + "source": "plans_2026_09_29_nginx_response_cache_task_1_nginx_compose_service_http_context_config_upstream_bypass_routing", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L512", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_14" + "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L519", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L206", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_15" + "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L539", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L246", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_16" + "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L548", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L282", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_17" + "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L606", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L295", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_18" + "source": "plans_2026_09_29_nginx_response_cache_task_2_cached_locations_shared_proxy_snippet_mirrored_ttls", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L314", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_15_workspace_endpoints_md", - "target": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan" + "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L16", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L321", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan", - "target": "plans_2026_08_15_workspace_endpoints_global_constraints" + "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L632", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L333", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan", - "target": "plans_2026_08_15_workspace_endpoints_self_review" + "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L29", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L346", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write" + "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L152", + "source_file": "docs/superpowers/plans/2026-09-29-nginx-response-cache.md", + "source_location": "L367", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting" + "source": "plans_2026_09_29_nginx_response_cache_task_3_measure_the_gil_relief_and_record_it", + "target": "plans_2026_09_29_nginx_response_cache_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L198", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints" + "source": "docs_superpowers_plans_2026_09_29_stocks_cache_ttl_md", + "target": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L465", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool" + "source": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan", + "target": "plans_2026_09_29_stocks_cache_ttl_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L611", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_5_full_verification" + "source": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan", + "target": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L410", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_1" + "source": "plans_2026_09_29_stocks_cache_ttl_stocks_api_cache_ttl_fields_cache_implementation_plan", + "target": "plans_2026_09_29_stocks_cache_ttl_execution_handoff" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L108", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_2" + "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L145", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_3" + "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L166", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L254", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_4" + "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L172", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L340", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_5" + "source": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L180", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_6" + "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L191", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_7" + "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L212", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L103", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_8" + "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L368", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_9" + "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L375", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_10" + "source": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L381", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_11" + "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L458", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L165", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_12" + "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L479", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L220", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_13" + "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L560", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L228", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_14" + "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L566", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L247", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_15" + "source": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L593", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L269", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_16" + "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L604", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L301", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_17" + "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L626", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L311", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_5_full_verification", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_18" + "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L333", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_15_workspace_frontend_md", - "target": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan" + "source": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L352", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", - "target": "plans_2026_08_15_workspace_frontend_backend_contract_source_of_truth_for_api_js" + "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L32", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L363", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", - "target": "plans_2026_08_15_workspace_frontend_global_constraints" + "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L376", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js" + "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L176", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L384", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar" + "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L294", + "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", + "source_location": "L402", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx" + "source": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", + "target": "plans_2026_09_29_stocks_cache_ttl_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L403", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_4_docker_restart_e2e_of_prometheus_chat_stream_performed_by_controller_not_a_subagent" + "source": "docs_superpowers_plans_2026_09_29_uvicorn_worker_scaling_md", + "target": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L61", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", - "target": "plans_2026_08_15_workspace_frontend_codeblock_1" + "source": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan", + "target": "plans_2026_09_29_uvicorn_worker_scaling_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L122", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", - "target": "plans_2026_08_15_workspace_frontend_codeblock_2" + "source": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan", + "target": "plans_2026_09_29_uvicorn_worker_scaling_review_focus" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L169", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L725", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", - "target": "plans_2026_08_15_workspace_frontend_codeblock_3" + "source": "plans_2026_09_29_uvicorn_worker_scaling_uvicorn_fastapi_worker_scaling_implementation_plan", + "target": "plans_2026_09_29_uvicorn_worker_scaling_self_review" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L191", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_4" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L246", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L170", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_5" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L272", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L292", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_6" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L287", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L365", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_7" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L308", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L431", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", - "target": "plans_2026_08_15_workspace_frontend_codeblock_8" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L372", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L654", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", - "target": "plans_2026_08_15_workspace_frontend_codeblock_9" + "source": "plans_2026_09_29_uvicorn_worker_scaling_review_focus", + "target": "plans_2026_09_29_uvicorn_worker_scaling_task_6_verify_the_fleet_single_build_one_migration_shared_frame" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L396", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx", - "target": "plans_2026_08_15_workspace_frontend_codeblock_10" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_17_openui_migration_md", - "target": "plans_2026_08_17_openui_migration_openui_migration_plan" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L20", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_global_constraints" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_1_measure_the_concurrency_ceiling_and_record_the_decision", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L30", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L182", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_file_structure" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L52", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L228", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L80", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L244", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L385", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L285", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_2_load_the_cache_on_the_build_loser_path", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L455", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L304", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L610", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L333", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_5_integration_test" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L640", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L358", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_verification_checklist" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_3_run_migrations_exactly_once_per_deploy", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L32", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L377", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_file_structure", - "target": "plans_2026_08_17_openui_migration_frontend_local_only_never_committed" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L407", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_file_structure", - "target": "plans_2026_08_17_openui_migration_backend_commit" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L58", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L424", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", - "target": "plans_2026_08_17_openui_migration_codeblock_1" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_4_size_database_pools_by_process_count", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L66", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L444", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", - "target": "plans_2026_08_17_openui_migration_codeblock_2" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L72", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L476", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", - "target": "plans_2026_08_17_openui_migration_codeblock_3" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L86", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L483", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library", - "target": "plans_2026_08_17_openui_migration_component_mapping" + "confidence_score": 1.0, + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L101", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L494", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_component_mapping", - "target": "plans_2026_08_17_openui_migration_codeblock_4" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L339", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L618", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_component_mapping", - "target": "plans_2026_08_17_openui_migration_codeblock_5" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L396", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L647", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_6" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_5_run_stocks_api_as_n_single_service_processes_behind_nginx", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L428", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L666", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_7" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_6_verify_the_fleet_single_build_one_migration_shared_frame", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_20" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L435", + "source_file": "docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md", + "source_location": "L718", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_8" + "source": "plans_2026_09_29_uvicorn_worker_scaling_task_6_verify_the_fleet_single_build_one_migration_shared_frame", + "target": "plans_2026_09_29_uvicorn_worker_scaling_codeblock_21" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L442", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_9" + "source": "docs_superpowers_plans_2026_09_29_zerocopy_stocks_cache_md", + "target": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L449", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_10" + "source": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan", + "target": "plans_2026_09_29_zerocopy_stocks_cache_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L467", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_11" + "source": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan", + "target": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L486", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L353", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_12" + "source": "plans_2026_09_29_zerocopy_stocks_cache_zero_copy_memory_mapped_stocks_cache_implementation_plan", + "target": "plans_2026_09_29_zerocopy_stocks_cache_execution_handoff" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L501", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_13" + "source": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L542", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L125", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_14" + "source": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L555", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L292", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_15" + "source": "plans_2026_09_29_zerocopy_stocks_cache_review_focus_spec_implied_inputs_most_likely_to_bite", + "target": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L572", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_16" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L577", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_17" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L590", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_18" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L596", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L107", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_19" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L602", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_20" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_1_presort_at_build_time_order_by_b3_presorted_marker", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L614", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_5_integration_test", - "target": "plans_2026_08_17_openui_migration_codeblock_21" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L620", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_5_integration_test", - "target": "plans_2026_08_17_openui_migration_codeblock_22" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L1", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_03_followup_hardening_md", - "target": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", - "target": "plans_2026_09_03_followup_hardening_global_constraints" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L26", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L165", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", - "target": "plans_2026_09_03_followup_hardening_file_map" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L814", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L250", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", - "target": "plans_2026_09_03_followup_hardening_self_review" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L44", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L256", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L127", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L268", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L240", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L285", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_2_zero_copy_mmap_load_readfeatherdataframe_marker_aware_sort_skip", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L337", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L306", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L415", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L327", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L509", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L331", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L562", + "source_file": "docs/superpowers/plans/2026-09-29-zerocopy-stocks-cache.md", + "source_location": "L346", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint" + "source": "plans_2026_09_29_zerocopy_stocks_cache_task_3_arrowdtype_aware_json_column_decompression_query_py_guard", + "target": "plans_2026_09_29_zerocopy_stocks_cache_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L623", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures" + "source": "docs_superpowers_specs_2026_09_04_wallet_design_md", + "target": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L712", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_1_context" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L61", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", - "target": "plans_2026_09_03_followup_hardening_codeblock_1" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_2_decision_design_a_pure_event_log_derive_at_read_time" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L80", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", - "target": "plans_2026_09_03_followup_hardening_codeblock_2" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_3_data_model_user_db_alembic" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L96", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", - "target": "plans_2026_09_03_followup_hardening_codeblock_3" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_4_derivations_all_at_read_time_date_order" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L120", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L175", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", - "target": "plans_2026_09_03_followup_hardening_codeblock_4" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_5_endpoints_wallet_on_the_user_port_via_walletservice_getcurrentuser_gate_inline_body_query" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L143", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L203", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", - "target": "plans_2026_09_03_followup_hardening_codeblock_5" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_6_live_prices_endpoint_only_isolation" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L185", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L235", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", - "target": "plans_2026_09_03_followup_hardening_codeblock_6" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_7_validation_422_naming_the_rule_503_for_price_outages" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L198", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L266", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", - "target": "plans_2026_09_03_followup_hardening_codeblock_7" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_8_testing_quality_gates_precedents_to_honor" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L204", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L287", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", - "target": "plans_2026_09_03_followup_hardening_codeblock_8" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_9_scope" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L233", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L302", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", - "target": "plans_2026_09_03_followup_hardening_codeblock_9" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_10_splits_served_prices_are_raw_by_default_verified_verdict_encode_as_is" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L256", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L326", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", - "target": "plans_2026_09_03_followup_hardening_codeblock_10" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_11_dividends_no_dedicated_endpoint_verified_verdict_encode_as_is" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L284", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L364", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", - "target": "plans_2026_09_03_followup_hardening_codeblock_11" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_12_corporate_actions_splits_and_grupamentos_via_one_read_time_mechanism" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L298", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L403", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", - "target": "plans_2026_09_03_followup_hardening_codeblock_12" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_13_dividend_methodology_ex_date_smoothing_check_both_branches_test_decides" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L330", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L422", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", - "target": "plans_2026_09_03_followup_hardening_codeblock_13" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_spec_self_review" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L351", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", - "target": "plans_2026_09_03_followup_hardening_codeblock_14" + "source": "specs_2026_09_04_wallet_design_2_decision_design_a_pure_event_log_derive_at_read_time", + "target": "specs_2026_09_04_wallet_design_approaches_considered" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L390", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", - "target": "plans_2026_09_03_followup_hardening_codeblock_15" + "source": "docs_superpowers_specs_2026_09_29_nginx_scaling_design_md", + "target": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L408", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", - "target": "plans_2026_09_03_followup_hardening_codeblock_16" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_1_context" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L429", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", - "target": "plans_2026_09_03_followup_hardening_codeblock_17" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_2_decisions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L451", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L103", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", - "target": "plans_2026_09_03_followup_hardening_codeblock_18" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_3_caching_policy_canonical" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L502", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", - "target": "plans_2026_09_03_followup_hardening_codeblock_19" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_4_topology" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L525", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", - "target": "plans_2026_09_03_followup_hardening_codeblock_20" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_5_quota_and_rate_limits_after_caching" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L541", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", - "target": "plans_2026_09_03_followup_hardening_codeblock_21" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_6_non_goals" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L555", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L163", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", - "target": "plans_2026_09_03_followup_hardening_codeblock_22" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_7_acceptance_criteria" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L577", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L173", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", - "target": "plans_2026_09_03_followup_hardening_codeblock_23" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_8_open_decisions_product_owned" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L598", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L182", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", - "target": "plans_2026_09_03_followup_hardening_codeblock_24" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_9_risks_top_of_the_register_full_15_row_table_in_the_source_document_3_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L616", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", - "target": "plans_2026_09_03_followup_hardening_codeblock_25" + "source": "specs_2026_09_29_nginx_scaling_design_nginx_response_cache_multi_server_scaling_design_spec", + "target": "specs_2026_09_29_nginx_scaling_design_10_plans_and_follow_ups" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L640", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", - "target": "plans_2026_09_03_followup_hardening_codeblock_26" + "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d1_put_an_nginx_response_cache_in_front_of_stocks_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L668", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", - "target": "plans_2026_09_03_followup_hardening_codeblock_27" + "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d2_raise_the_app_layer_ttls_and_cache_fields_before_any_nginx_work_accepted_rev_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L676", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", - "target": "plans_2026_09_03_followup_hardening_codeblock_28" + "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d3_pinned_static_upstreams_now_docker_swarm_routing_mesh_only_at_5_nodes_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L705", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", - "target": "plans_2026_09_03_followup_hardening_codeblock_29" + "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d4_cache_is_per_node_rebuilt_on_version_not_nfs_not_rsync_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L731", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", - "target": "plans_2026_09_03_followup_hardening_codeblock_30" + "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d5_redis_is_deferred_accepted_rev_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L753", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", - "target": "plans_2026_09_03_followup_hardening_codeblock_31" + "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d6_extraction_order_stocks_api_orunmila_forgevm_user_scraper_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L769", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", - "target": "plans_2026_09_03_followup_hardening_codeblock_32" + "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d7_health_strategy_stays_passive_until_a_black_hole_is_observed_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L780", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", - "target": "plans_2026_09_03_followup_hardening_codeblock_33" + "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d8_cached_hits_bypass_the_monthly_quota_counter_accepted_product_visible" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L807", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", - "target": "plans_2026_09_03_followup_hardening_codeblock_34" + "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d9_benchmark_result_artifacts_follow_the_draft_convention_accepted_rev_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_04_wallet_management_md", - "target": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan" + "source": "specs_2026_09_29_nginx_scaling_design_2_decisions", + "target": "specs_2026_09_29_nginx_scaling_design_d10_the_endpoint_cache_is_invalidated_on_every_feather_reload_accepted" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L13", + "source_file": "docs/superpowers/specs/2026-09-29-nginx-scaling-design.md", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", - "target": "plans_2026_09_04_wallet_management_global_constraints" + "source": "specs_2026_09_29_nginx_scaling_design_4_topology", + "target": "specs_2026_09_29_nginx_scaling_design_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L35", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", - "target": "plans_2026_09_04_wallet_management_file_structure" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state_file_line" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_2_options_evaluated" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L166", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_3_exact_required_changes_before_raising_n" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L269", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_4_risks_and_open_items" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L391", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_5_baseline_measured" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L567", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_6_evaluation_of_the_user_s_docs_nginx_scaling_plan_md" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L720", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L121", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_and_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_7_what_is_out_of_scope_separate_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L869", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices" + "source": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state_file_line", + "target": "superpowers_uvicorn_worker_scaling_plan_1_1_runtime_topology_one_process_many_threads" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1000", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain" + "source": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state_file_line", + "target": "superpowers_uvicorn_worker_scaling_plan_1_2_the_cache_is_already_the_right_shape_for_multi_process" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1115", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage" + "source": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state_file_line", + "target": "superpowers_uvicorn_worker_scaling_plan_1_3_per_process_state_that_multiplies_with_n" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1224", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1325", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_2_the_blocking_defect_must_fix_before_n_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1482", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_3_options_evaluated" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1618", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_4_recommended_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L73", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", - "target": "plans_2026_09_04_wallet_management_codeblock_1" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_5_evaluation_of_the_existing_scaling_plan_recovered_from_git" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L101", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", - "target": "plans_2026_09_04_wallet_management_codeblock_2" + "source": "superpowers_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_6_risks_open_items" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L138", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", - "target": "plans_2026_09_04_wallet_management_codeblock_3" + "source": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state", + "target": "superpowers_uvicorn_worker_scaling_plan_1_1_process_model_exactly_one_process_several_threads" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L144", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", - "target": "plans_2026_09_04_wallet_management_codeblock_4" + "source": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state", + "target": "superpowers_uvicorn_worker_scaling_plan_1_2_cache_post_refactor_ram_sharing_works" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L159", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", - "target": "plans_2026_09_04_wallet_management_codeblock_5" + "source": "superpowers_uvicorn_worker_scaling_plan_1_verified_current_state", + "target": "superpowers_uvicorn_worker_scaling_plan_1_3_per_process_resources_that_multiply_with_n_workers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L189", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", - "target": "plans_2026_09_04_wallet_management_codeblock_6" + "source": "superpowers_uvicorn_worker_scaling_plan_2_the_blocking_defect_must_fix_before_n_1", + "target": "superpowers_uvicorn_worker_scaling_plan_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L248", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L81", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", - "target": "plans_2026_09_04_wallet_management_codeblock_7" + "source": "superpowers_uvicorn_worker_scaling_plan_4_recommended_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_phase_0_measure_half_a_day_no_infra" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L262", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", - "target": "plans_2026_09_04_wallet_management_codeblock_8" + "source": "superpowers_uvicorn_worker_scaling_plan_4_recommended_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_phase_1_correctness_fixes_required_before_any_n_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L281", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", - "target": "plans_2026_09_04_wallet_management_codeblock_9" + "source": "superpowers_uvicorn_worker_scaling_plan_4_recommended_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_phase_2_enable_workers_on_one_host_option_c" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L325", + "source_file": "docs/superpowers/uvicorn-worker-scaling-plan.md", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", - "target": "plans_2026_09_04_wallet_management_codeblock_10" + "source": "superpowers_uvicorn_worker_scaling_plan_4_recommended_plan", + "target": "superpowers_uvicorn_worker_scaling_plan_phase_3_multi_host_only_if_you_split_boxes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L384", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", - "target": "plans_2026_09_04_wallet_management_codeblock_11" + "source": "docs_uvicorn_worker_scaling_plan_md", + "target": "docs_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L404", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", - "target": "plans_2026_09_04_wallet_management_codeblock_12" + "source": "docs_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "docs_uvicorn_worker_scaling_plan_1_verified_current_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L471", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", - "target": "plans_2026_09_04_wallet_management_codeblock_13" + "source": "docs_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "docs_uvicorn_worker_scaling_plan_2_the_blocking_defect_must_fix_before_n_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L524", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", - "target": "plans_2026_09_04_wallet_management_codeblock_14" + "source": "docs_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "docs_uvicorn_worker_scaling_plan_3_options_evaluated" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L560", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", - "target": "plans_2026_09_04_wallet_management_codeblock_15" + "source": "docs_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "docs_uvicorn_worker_scaling_plan_4_recommended_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L580", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", - "target": "plans_2026_09_04_wallet_management_codeblock_16" + "source": "docs_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "docs_uvicorn_worker_scaling_plan_5_evaluation_of_the_existing_scaling_plan_recovered_from_git" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L649", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", - "target": "plans_2026_09_04_wallet_management_codeblock_17" + "source": "docs_uvicorn_worker_scaling_plan_uvicorn_worker_scaling_verified_state_evaluated_plan", + "target": "docs_uvicorn_worker_scaling_plan_6_risks_open_items" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L659", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", - "target": "plans_2026_09_04_wallet_management_codeblock_18" + "source": "docs_uvicorn_worker_scaling_plan_1_verified_current_state", + "target": "docs_uvicorn_worker_scaling_plan_1_1_process_model_exactly_one_process_several_threads" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L693", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", - "target": "plans_2026_09_04_wallet_management_codeblock_19" + "source": "docs_uvicorn_worker_scaling_plan_1_verified_current_state", + "target": "docs_uvicorn_worker_scaling_plan_1_2_cache_post_refactor_ram_sharing_works" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L713", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", - "target": "plans_2026_09_04_wallet_management_codeblock_20" + "source": "docs_uvicorn_worker_scaling_plan_1_verified_current_state", + "target": "docs_uvicorn_worker_scaling_plan_1_3_per_process_resources_that_multiply_with_n_workers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L732", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", - "target": "plans_2026_09_04_wallet_management_codeblock_21" + "source": "docs_uvicorn_worker_scaling_plan_2_the_blocking_defect_must_fix_before_n_1", + "target": "docs_uvicorn_worker_scaling_plan_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L804", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L81", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", - "target": "plans_2026_09_04_wallet_management_codeblock_22" + "source": "docs_uvicorn_worker_scaling_plan_4_recommended_plan", + "target": "docs_uvicorn_worker_scaling_plan_phase_0_measure_half_a_day_no_infra" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L862", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", - "target": "plans_2026_09_04_wallet_management_codeblock_23" + "source": "docs_uvicorn_worker_scaling_plan_4_recommended_plan", + "target": "docs_uvicorn_worker_scaling_plan_phase_1_correctness_fixes_required_before_any_n_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L882", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_24" + "source": "docs_uvicorn_worker_scaling_plan_4_recommended_plan", + "target": "docs_uvicorn_worker_scaling_plan_phase_2_enable_workers_on_one_host_option_c" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L944", + "source_file": "docs/uvicorn-worker-scaling-plan.md", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_25" + "source": "docs_uvicorn_worker_scaling_plan_4_recommended_plan", + "target": "docs_uvicorn_worker_scaling_plan_phase_3_multi_host_only_if_you_split_boxes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L972", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_26" + "source": "docs_investidor10_wallet_research_md", + "target": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L993", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_27" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_1_feature_inventory_nav_structure" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1013", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_28" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_2_user_lifecycle_end_to_end" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1062", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_29" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_3_wallet_api_reference" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1095", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_30" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1108", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_31" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_5_product_logic" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1143", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_32" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1157", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_33" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1165", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_34" + "source": "docs_investidor10_wallet_spec_md", + "target": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1192", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L12", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_35" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_1_requirements" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1217", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_36" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_2_domain_model" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1237", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_37" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1276", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_38" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1299", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_39" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1318", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L81", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_40" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1341", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_41" + "source": "docs_investidor10_wallet_spec_1_requirements", + "target": "docs_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1397", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_42" + "source": "docs_investidor10_wallet_spec_1_requirements", + "target": "docs_investidor10_wallet_spec_1_2_non_functional" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1419", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L85", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_43" + "source": "docs_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "docs_investidor10_wallet_spec_6_1_db_migrations_user_db_ready_2_actions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1452", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_44" + "source": "docs_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "docs_investidor10_wallet_spec_6_2_stocks_price_access_ready_for_full_series_one_new_helper_needed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1475", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_45" + "source": "docs_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "docs_investidor10_wallet_spec_6_3_wiring_auth_tests_ready" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1496", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_46" + "source": "docs_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "docs_investidor10_wallet_spec_6_4_scraper_pipeline_p2_dividends_has_b3_ready_public_sources_only" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1512", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L110", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_47" + "source": "docs_investidor10_wallet_spec_6_readiness_assessment_s3_verified_2026_09_29_prerequisites_before_p1", + "target": "docs_investidor10_wallet_spec_6_5_ordered_actions_before_p1_code" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1528", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_48" + "source": "docs_nginx_scaling_plan_md", + "target": "docs_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1546", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_49" + "source": "docs_nginx_scaling_plan_md", + "target": "docs_nginx_scaling_plan_part_1_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1582", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L314", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_50" + "source": "docs_nginx_scaling_plan_md", + "target": "docs_nginx_scaling_plan_part_2_benchmark_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1613", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L477", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_51" + "source": "docs_nginx_scaling_plan_md", + "target": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1635", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L628", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_52" + "source": "docs_nginx_scaling_plan_md", + "target": "docs_nginx_scaling_plan_open_decisions_blocking_or_product_owned" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1661", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L636", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_53" + "source": "docs_nginx_scaling_plan_md", + "target": "docs_nginx_scaling_plan_next_actions_not_in_scope_here" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1686", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_54" + "source": "docs_nginx_scaling_plan_nginx_scaling_plan_reverse_proxy_response_cache_for_stocks_and_the_multi_server_evolution", + "target": "docs_nginx_scaling_plan_0_purpose_and_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1727", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_55" + "source": "docs_nginx_scaling_plan_part_1_implementation_plan", + "target": "docs_nginx_scaling_plan_1_1_architecture_decision" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L1", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_12_artifact_removal_cache_verdict_md", - "target": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan" + "source": "docs_nginx_scaling_plan_part_1_implementation_plan", + "target": "docs_nginx_scaling_plan_1_2_file_layout" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L3", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan", - "target": "plans_2026_09_12_artifact_removal_cache_verdict_part_1_deletions_safe_no_live_referrers" + "source": "docs_nginx_scaling_plan_part_1_implementation_plan", + "target": "docs_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L25", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan", - "target": "plans_2026_09_12_artifact_removal_cache_verdict_part_2_cache_verdict_keep_the_dict_skip_cashews" + "source": "docs_nginx_scaling_plan_part_1_implementation_plan", + "target": "docs_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L1", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L218", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_14_memory_postgres_pgvector_plan_md", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_memory_postgres_pgvector_migration_implementation_plan" + "source": "docs_nginx_scaling_plan_part_1_implementation_plan", + "target": "docs_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L13", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L244", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_memory_postgres_pgvector_migration_implementation_plan", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints" + "source": "docs_nginx_scaling_plan_part_1_implementation_plan", + "target": "docs_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L24", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L276", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill" + "source": "docs_nginx_scaling_plan_part_1_implementation_plan", + "target": "docs_nginx_scaling_plan_1_7_phase_p4_handoff_design_no_code_in_this_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L79", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L287", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search" + "source": "docs_nginx_scaling_plan_part_1_implementation_plan", + "target": "docs_nginx_scaling_plan_1_8_quota_rate_limit_semantics_after_caching" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L139", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L299", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files" + "source": "docs_nginx_scaling_plan_part_1_implementation_plan", + "target": "docs_nginx_scaling_plan_1_9_anti_scraping_note_todo_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L171", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L303", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_4_full_test_sweep_18_suites_postgres_ci_parity" + "source": "docs_nginx_scaling_plan_part_1_implementation_plan", + "target": "docs_nginx_scaling_plan_1_10_edge_cases_risks_implementation" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L185", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_5_docs_close" + "source": "docs_nginx_scaling_plan_1_2_file_layout", + "target": "docs_nginx_scaling_plan_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L35", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_1" + "source": "docs_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", + "target": "docs_nginx_scaling_plan_codeblock_2" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L65", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L85", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_2" + "source": "docs_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", + "target": "docs_nginx_scaling_plan_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L74", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_3" + "source": "docs_nginx_scaling_plan_1_3_phase_p0_nginx_service_config_skeleton", + "target": "docs_nginx_scaling_plan_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L97", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_4" + "source": "docs_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", + "target": "docs_nginx_scaling_plan_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L134", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L153", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_5" + "source": "docs_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", + "target": "docs_nginx_scaling_plan_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L148", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L209", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_6" + "source": "docs_nginx_scaling_plan_1_4_phase_p1_cache_locations_ttl_table_directives", + "target": "docs_nginx_scaling_plan_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L166", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L224", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_7" + "source": "docs_nginx_scaling_plan_1_5_phase_p2_port_scheme_worker_containers_keepalive", + "target": "docs_nginx_scaling_plan_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L189", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L246", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_5_docs_close", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_8" + "source": "docs_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy", + "target": "docs_nginx_scaling_plan_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L1", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L258", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_15_adopt_libs_md", - "target": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan" + "source": "docs_nginx_scaling_plan_1_6_phase_p3_remote_vps_upstreams_health_strategy", + "target": "docs_nginx_scaling_plan_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L13", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L316", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan", - "target": "plans_2026_09_15_adopt_libs_global_constraints" + "source": "docs_nginx_scaling_plan_part_2_benchmark_plan", + "target": "docs_nginx_scaling_plan_2_0_grounding_what_the_code_actually_does" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L24", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L348", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries" + "source": "docs_nginx_scaling_plan_part_2_benchmark_plan", + "target": "docs_nginx_scaling_plan_2_1_hypotheses" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L56", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L357", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_2_cashews_native_probe_first" + "source": "docs_nginx_scaling_plan_part_2_benchmark_plan", + "target": "docs_nginx_scaling_plan_2_2_tooling" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L76", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L407", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_3_pydantic_validates_llm_extraction_json" + "source": "docs_nginx_scaling_plan_part_2_benchmark_plan", + "target": "docs_nginx_scaling_plan_2_3_scenarios" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L102", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L419", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_4_sse_starlette_replaces_hand_sse_bus" + "source": "docs_nginx_scaling_plan_part_2_benchmark_plan", + "target": "docs_nginx_scaling_plan_2_4_protocol" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L117", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L430", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_5_rapidfuzz_memory_key_dedup" + "source": "docs_nginx_scaling_plan_part_2_benchmark_plan", + "target": "docs_nginx_scaling_plan_2_5_metrics" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L132", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L434", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_6_cachetools_bounds_token_cache" + "source": "docs_nginx_scaling_plan_part_2_benchmark_plan", + "target": "docs_nginx_scaling_plan_2_6_acceptance_thresholds_all_proposed_freeze_after_first_real_run" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L143", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L451", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_7_user_agents_fills_device_fields_optional" + "source": "docs_nginx_scaling_plan_part_2_benchmark_plan", + "target": "docs_nginx_scaling_plan_2_7_results_doc_layout" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L154", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L460", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_8_pytest_plugin_set" + "source": "docs_nginx_scaling_plan_part_2_benchmark_plan", + "target": "docs_nginx_scaling_plan_2_8_feeding_status_todo_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L38", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L466", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries", - "target": "plans_2026_09_15_adopt_libs_codeblock_1" + "source": "docs_nginx_scaling_plan_part_2_benchmark_plan", + "target": "docs_nginx_scaling_plan_2_9_benchmark_risks" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L51", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L360", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries", - "target": "plans_2026_09_15_adopt_libs_codeblock_2" + "source": "docs_nginx_scaling_plan_2_2_tooling", + "target": "docs_nginx_scaling_plan_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L72", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L373", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_task_2_cashews_native_probe_first", - "target": "plans_2026_09_15_adopt_libs_codeblock_3" + "source": "docs_nginx_scaling_plan_2_2_tooling", + "target": "docs_nginx_scaling_plan_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L88", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L381", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_task_3_pydantic_validates_llm_extraction_json", - "target": "plans_2026_09_15_adopt_libs_codeblock_4" + "source": "docs_nginx_scaling_plan_2_2_tooling", + "target": "docs_nginx_scaling_plan_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L1", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L387", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_specs_2026_09_04_wallet_design_md", - "target": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec" + "source": "docs_nginx_scaling_plan_2_2_tooling", + "target": "docs_nginx_scaling_plan_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L8", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L398", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_1_context" + "source": "docs_nginx_scaling_plan_2_2_tooling", + "target": "docs_nginx_scaling_plan_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L46", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L453", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_2_decision_design_a_pure_event_log_derive_at_read_time" + "source": "docs_nginx_scaling_plan_2_7_results_doc_layout", + "target": "docs_nginx_scaling_plan_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L68", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L479", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_3_data_model_user_db_alembic" + "source": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "docs_nginx_scaling_plan_3_0_verified_ground_truth" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L131", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L496", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_4_derivations_all_at_read_time_date_order" + "source": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "docs_nginx_scaling_plan_3_1_target_topology" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L175", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L513", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_5_endpoints_wallet_on_the_user_port_via_walletservice_getcurrentuser_gate_inline_body_query" + "source": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "docs_nginx_scaling_plan_3_2_worker_container_extraction" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L203", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L530", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_6_live_prices_endpoint_only_isolation" + "source": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "docs_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L235", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L551", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_7_validation_422_naming_the_rule_503_for_price_outages" + "source": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "docs_nginx_scaling_plan_3_4_todo_13_migration_drop_service_host_service_port" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L266", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L558", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_8_testing_quality_gates_precedents_to_honor" + "source": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "docs_nginx_scaling_plan_3_5_redis_exactly_two_jobs" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L287", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L574", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_9_scope" + "source": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "docs_nginx_scaling_plan_3_6_cache_strategy_across_boxes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L302", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L580", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_10_splits_served_prices_are_raw_by_default_verified_verdict_encode_as_is" + "source": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "docs_nginx_scaling_plan_3_7_autoscaling_story_todo_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L326", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L585", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_11_dividends_no_dedicated_endpoint_verified_verdict_encode_as_is" + "source": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "docs_nginx_scaling_plan_3_8_forgevm_interplay_todo_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L364", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L589", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_12_corporate_actions_splits_and_grupamentos_via_one_read_time_mechanism" + "source": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "docs_nginx_scaling_plan_3_9_risk_register" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L403", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L609", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_13_dividend_methodology_ex_date_smoothing_check_both_branches_test_decides" + "source": "docs_nginx_scaling_plan_part_3_future_scaling_evolution_risks", + "target": "docs_nginx_scaling_plan_3_10_migration_sequence_verification" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L422", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L501", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_spec_self_review" + "source": "docs_nginx_scaling_plan_3_1_target_topology", + "target": "docs_nginx_scaling_plan_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L53", + "source_file": "docs/nginx-scaling-plan.md", + "source_location": "L534", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_2_decision_design_a_pure_event_log_derive_at_read_time", - "target": "specs_2026_09_04_wallet_design_approaches_considered" + "source": "docs_nginx_scaling_plan_3_3_nginx_upstream_evolution_validated_against_the_user_s_plan", + "target": "docs_nginx_scaling_plan_codeblock_18" }, { "relation": "calls", @@ -143721,5 +150454,5 @@ "label": "User Authentication & Authorization" } ], - "built_at_commit": "09a2310802f2d3b4d7f5f50af8e789acdcd23abf" + "built_at_commit": "679c3dfccf596dfcedaeda2c9fd39bab574ca233" } \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index be162447..6b53e1a2 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -10,8 +10,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\config.py": { - "mtime": 1790707412.4639857, - "ast_hash": "0431e47774260b291eafe77a2f44dd99", + "mtime": 1790720783.5089538, + "ast_hash": "6866a62e1361905e6966e7e3cdcb5cc8", "semantic_hash": "" }, "D:\\Repositories\\server\\run.py": { @@ -215,8 +215,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\authentication\\introspect.py": { - "mtime": 1790709776.485443, - "ast_hash": "c21d1ed541c25ba0e171b41535cf7926", + "mtime": 1790722324.1959848, + "ast_hash": "f9262c3f80a2b63e144914921d61bccb", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\authentication\\session.py": { @@ -230,7 +230,7 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\authentication\\util.py": { - "mtime": 1789365931.8706675, + "mtime": 1790721201.2744982, "ast_hash": "b797eff10d6300739b550248fe003dbf", "semantic_hash": "" }, @@ -240,8 +240,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\orunmila\\chat.py": { - "mtime": 1789627519.913642, - "ast_hash": "2c4bccbe66499695aae4ee9fdadbb9d0", + "mtime": 1790722281.0376277, + "ast_hash": "ab8f1f6abbe567f88d2e0c5a26b51e4a", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\orunmila\\compact.py": { @@ -280,8 +280,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\scraper_b3\\scraper.py": { - "mtime": 1790711328.3358188, - "ast_hash": "59c7a34a305a6e90f5e7b4daa8e295eb", + "mtime": 1790713506.6574717, + "ast_hash": "e7e449234b41094827a1bc2b43178561", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\scraper_b3\\xango.py": { @@ -290,13 +290,13 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\cache.py": { - "mtime": 1789434714.8335533, - "ast_hash": "f483c0857c4d84c3561a456b168b958c", + "mtime": 1790724655.0228858, + "ast_hash": "388139c59bea2be15ee4f8b0c88ed5f0", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\compress.py": { - "mtime": 1789365748.7463734, - "ast_hash": "bac7ddeafcf3f4e917d23e190f8d2a50", + "mtime": 1790724898.1914341, + "ast_hash": "5727624a2e4a0ff71d6712bc5a6a612d", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\key.py": { @@ -305,13 +305,13 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\query.py": { - "mtime": 1789434788.4910736, - "ast_hash": "d8942fd6280c22db0c7000c0a129f55a", + "mtime": 1790715582.5629618, + "ast_hash": "c07116fa51c154d741c5c5fd01486714", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\sync_cache.py": { - "mtime": 1789363755.282281, - "ast_hash": "2868edb52460fde88cc704901c64254c", + "mtime": 1790723901.4459727, + "ast_hash": "ccb5104dfcd8d85e68fb42602486f1a1", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\util.py": { @@ -325,8 +325,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\authentication_controller.py": { - "mtime": 1790712038.5117102, - "ast_hash": "b2b09061a10fe244011b26ecd589f50e", + "mtime": 1790721202.5567384, + "ast_hash": "8be9ba65e0116ce4ad4867fcc59bae50", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\orunmila_controller.py": { @@ -335,8 +335,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\stocksapi_controller.py": { - "mtime": 1789365824.939239, - "ast_hash": "deb972bc1e3fc058d2c8db97113f86a0", + "mtime": 1790723781.080048, + "ast_hash": "b9abf6a7b19fa64a64cc5d4386b15687", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\user_controller.py": { @@ -385,8 +385,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\authentication_service.py": { - "mtime": 1790712063.0129516, - "ast_hash": "2075ec61d0ef5be9a76db801df245f84", + "mtime": 1790720783.1180828, + "ast_hash": "2199185dd36046b7afa30557692a529a", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\orunmila_service.py": { @@ -545,8 +545,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\README.md": { - "mtime": 1789627715.7268107, - "ast_hash": "10c5689284ae6fc5ee634a3561ed5daa", + "mtime": 1790721188.6129105, + "ast_hash": "50718b7d5b427a75213e171f5da826f3", "semantic_hash": "" }, "D:\\Repositories\\server\\requirements.txt": { @@ -555,8 +555,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\TODO.md": { - "mtime": 1789627348.434652, - "ast_hash": "d055f0d64aaf60f16c5d9601fe41743b", + "mtime": 1790723757.2517514, + "ast_hash": "8765b8e1907bb2d991630082eae83b5b", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\authentication.md": { @@ -564,16 +564,6 @@ "ast_hash": "418f5a3a5d92e6afdd9a8867235bfa38", "semantic_hash": "" }, - "D:\\Repositories\\server\\docs\\investidor10-wallet-research.md": { - "mtime": 1790608792.5175328, - "ast_hash": "35046b81330a196719f10192cfd18245", - "semantic_hash": "" - }, - "D:\\Repositories\\server\\docs\\investidor10-wallet-spec.md": { - "mtime": 1790609352.4477687, - "ast_hash": "2245af87ca983eb3d0fec11daf0c3a87", - "semantic_hash": "" - }, "D:\\Repositories\\server\\docs\\orunmila.md": { "mtime": 1789627746.0334775, "ast_hash": "c92e378440f8ec322185c6c647fd7580", @@ -594,6 +584,26 @@ "ast_hash": "1441362ec9c24f3e04abfd6c913b8efe", "semantic_hash": "" }, + "D:\\Repositories\\server\\docs\\superpowers\\investidor10-wallet-research.md": { + "mtime": 1790722729.1475766, + "ast_hash": "350d3ac11cb57db7093fcbcfcebd423a", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\docs\\superpowers\\investidor10-wallet-spec.md": { + "mtime": 1790722776.4594035, + "ast_hash": "5b5eb1d6eb186eebcc200bc3b4f8d77c", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\docs\\superpowers\\nginx-scaling-plan.md": { + "mtime": 1790715847.5265036, + "ast_hash": "821d1ab64e7ea4f1a8903c26adcdffb8", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\docs\\superpowers\\uvicorn-worker-scaling-plan.md": { + "mtime": 1790723409.2143178, + "ast_hash": "5bc55983f02c9f640b96fe2ade89e7d2", + "semantic_hash": "" + }, "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-08-09-sse-resume.md": { "mtime": 1786286515.2616172, "ast_hash": "6dea783c1c379b193b0234febff9ed28", @@ -644,11 +654,36 @@ "ast_hash": "6bbe07e07379d48bbc77c0d367feedc7", "semantic_hash": "" }, + "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-09-29-nginx-response-cache.md": { + "mtime": 1790716965.7762914, + "ast_hash": "81c18d85ba503d04f69a56700b821fd8", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-09-29-stocks-cache-ttl.md": { + "mtime": 1790717665.1465101, + "ast_hash": "df8c020fbd56367a6e1d0c215a5524c4", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-09-29-uvicorn-worker-scaling.md": { + "mtime": 1790723409.2183187, + "ast_hash": "d8b7c03ed6749dafb64c84757bd5a0e7", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-09-29-zerocopy-stocks-cache.md": { + "mtime": 1790713871.179236, + "ast_hash": "99973b0d3da44a0a7cbc01959fc8157a", + "semantic_hash": "" + }, "D:\\Repositories\\server\\docs\\superpowers\\specs\\2026-09-04-wallet-design.md": { "mtime": 1789266824.564381, "ast_hash": "3ad505fd6016388f87bd14fa8da4f40e", "semantic_hash": "" }, + "D:\\Repositories\\server\\docs\\superpowers\\specs\\2026-09-29-nginx-scaling-design.md": { + "mtime": 1790717689.797926, + "ast_hash": "9837810a532161e8b9ebcddf56af75f8", + "semantic_hash": "" + }, "D:\\Repositories\\server\\frontend\\index.html": { "mtime": 1785641936.6961534, "ast_hash": "7bbc5e5a7693a5828d34f9f4d7eb8125", diff --git a/main/app/authentication/introspect.py b/main/app/authentication/introspect.py index d5991fbd..85ad0a31 100644 --- a/main/app/authentication/introspect.py +++ b/main/app/authentication/introspect.py @@ -10,33 +10,31 @@ logger = logging.getLogger(__name__) -GENERIC_DETAIL = "Unauthorized" - def introspectToken(db: Session, token: str | None) -> dict: try: raw = (token or "").strip().removeprefix("Bearer ").strip() if not raw: - raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + raise HTTPException(status_code=401, detail="Unauthorized") payload = verifyAccessToken(raw) try: userId = int(payload["userId"]) except (KeyError, TypeError, ValueError): - raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + raise HTTPException(status_code=401, detail="Unauthorized") sessionId = payload.get("sessionId") if not sessionId or not SessionManager.validateSession(db, str(sessionId), userId): - raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + raise HTTPException(status_code=401, detail="Unauthorized") user = db.query(User).filter(User.userId == userId).first() if not user: - raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + raise HTTPException(status_code=401, detail="Unauthorized") return {"userId": user.userId, "username": user.username, "roles": UserManager.getRolesList(user)} except HTTPException: - raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + raise HTTPException(status_code=401, detail="Unauthorized") except Exception as e: logger.warning(f"Token introspection failed: {e}") - raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + raise HTTPException(status_code=401, detail="Unauthorized") From ffa33ed81f579f298713797ac382047a9b22c06c Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 20:54:05 -0300 Subject: [PATCH 6/8] todo --- TODO.md | 18 ++----- graphify-out/.graphify_labels.json | 1 + graphify-out/GRAPH_REPORT.md | 27 +++++----- graphify-out/graph.json | 84 +++++++++++++++--------------- graphify-out/manifest.json | 4 +- 5 files changed, 63 insertions(+), 71 deletions(-) diff --git a/TODO.md b/TODO.md index 654fa67d..06ef7a4d 100644 --- a/TODO.md +++ b/TODO.md @@ -1,17 +1,7 @@ -## Priorities (active order, 2026-09-29) - -1. **Cache TTL** — endpoint/response cache lifetimes (historical 1h, fundamental/cotations 5m, live 15s) and the app-layer TTL increase as the cheap first perf step. - - Plan: `docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md` - - Alt/related: `docs/superpowers/plans/2026-09-29-nginx-response-cache.md` -2. **nginx scaling** — one box, nginx in front, per-service routing and tailored configs so only the required services boot (remote VPS support). Draft plan + design spec. - - Draft: `docs/superpowers/nginx-scaling-plan.md` - - Design: `docs/superpowers/specs/2026-09-29-nginx-scaling-design.md` -3. **Wallet system (Iyagba)** — portfolio/wallet management for users. - - Spec: `docs/superpowers/investidor10-wallet-spec.md` - - Research: `docs/superpowers/investidor10-wallet-research.md` -4. **uvicorn scaling** — multi-process workers without duplicating the feather in RAM. Blocked on the B1–B6 change inventory; not ready to execute until the phase boundary and edge rate-limit decisions are made. - - Planning doc: `docs/superpowers/uvicorn-worker-scaling-plan.md` - - Implementation: `docs/superpowers/plans/2026-09-29-uvicorn-worker-scaling.md` +- [X] cache ttl +- [ ] nginx scaling +- [ ] wallet endpoints +- [ ] uvicorn scaling --- diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index c8f8b7a3..021bd946 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -598,6 +598,7 @@ "596": "Community 596", "597": "Community 597", "598": "Community 598", + "599": "Community 599", "603": "Community 603", "605": "Community 605" } diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index c7fbe62f..eb40e8ed 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - server (2026-09-29) ## Corpus Check -- 134 files · ~102,971 words +- 134 files · ~103,071 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 6628 nodes · 8877 edges · 601 communities (374 shown, 227 thin omitted) +- 6628 nodes · 8877 edges · 602 communities (374 shown, 228 thin omitted) - Extraction: 85% EXTRACTED · 15% INFERRED · 0% AMBIGUOUS · INFERRED: 1329 edges (avg confidence: 0.69) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `679c3dfc` +- Built from commit: `3e2a330c` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -600,6 +600,7 @@ - [[_COMMUNITY_Community 596|Community 596]] - [[_COMMUNITY_Community 597|Community 597]] - [[_COMMUNITY_Community 598|Community 598]] +- [[_COMMUNITY_Community 599|Community 599]] - [[_COMMUNITY_Community 603|Community 603]] - [[_COMMUNITY_Community 605|Community 605]] @@ -635,7 +636,7 @@ - **Configuration & Database Infrastructure** — config_Config, config_engine, config_stocksEngine [INFERRED] - **User Authentication & Authorization** — user_service, authentication, user_roles, permission_system [INFERRED] -## Communities (601 total, 227 thin omitted) +## Communities (602 total, 228 thin omitted) ### Community 0 - "Stocks API Endpoints" Cohesion: 0.0 @@ -1163,7 +1164,7 @@ Nodes (9): Same input → same hash., Different inputs → different hashes., Re ### Community 132 - "Community 132" Cohesion: 0.25 -Nodes (7): code:python (from dataclasses import dataclass), code:bash (git add main/app/wallet/__init__.py main/app/wallet/math.py ), code:python (from datetime import date), File Structure, Global Constraints, Task 3: Pure derivation math, Wallet Management (Thoth/Iyagba) Implementation Plan +Nodes (7): code:python ("""add wallet_holdings and wallet_lots tables), code:python (import main.models.wallet), code:bash (git add migrations/versions/wallet_tables_20260904_add_walle), File Structure, Global Constraints, Task 2: Alembic migration for wallet tables, Wallet Management (Thoth/Iyagba) Implementation Plan ### Community 133 - "Community 133" Cohesion: 0.18 @@ -1314,8 +1315,8 @@ Cohesion: 0.25 Nodes (8): padding, direction, pad_id, pad_to_multiple_of, pad_token, pad_type_id, strategy, Fixed ### Community 172 - "Community 172" -Cohesion: 0.11 -Nodes (21): authenticateUser(), AuthenticationManager, createUserAccount(), SessionManager, PrometheusChatManager, Cover getGoogleSSO (lines 6-14)., Cover getGoogleSSO (lines 6-14)., Cover __init__ and updateDates. (+13 more) +Cohesion: 0.14 +Nodes (19): AuthenticationManager, SessionManager, PrometheusChatManager, Cover getGoogleSSO (lines 6-14)., Cover getGoogleSSO (lines 6-14)., Cover __init__ and updateDates., Cover __init__ and updateDates (lines 22-37)., Cover streamMessage in agent.py. (+11 more) ### Community 173 - "Community 173" Cohesion: 0.25 @@ -1989,10 +1990,6 @@ Nodes (7): Integration tests for all query optimizations, Integration tests for Cohesion: 0.12 Nodes (7): TestAgentSandboxIntegration, makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., TestMakeChatIncludesMemoryTools -### Community 576 - "Community 576" -Cohesion: 0.5 -Nodes (4): code:python ("""add wallet_holdings and wallet_lots tables), code:python (import main.models.wallet), code:bash (git add migrations/versions/wallet_tables_20260904_add_walle), Task 2: Alembic migration for wallet tables - ### Community 577 - "Community 577" Cohesion: 0.33 Nodes (5): replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34). @@ -2069,6 +2066,10 @@ Nodes (4): 1.3 Phase P0 — nginx service + config skeleton, code:yaml (nginx:), Cohesion: 0.5 Nodes (4): 1.4 Phase P1 — cache locations, TTL table, directives, code:nginx (proxy_pass http://stocks_api;), code:nginx (server {), code:bash (K=sk_test_...; U='http://localhost/stocks/historical?search=) +### Community 599 - "Community 599" +Cohesion: 0.5 +Nodes (4): code:python (from dataclasses import dataclass), code:bash (git add main/app/wallet/__init__.py main/app/wallet/math.py ), code:python (from datetime import date), Task 3: Pure derivation math + ### Community 603 - "Community 603" Cohesion: 0.4 Nodes (5): Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, TestVerifyAPIKey @@ -2080,14 +2081,14 @@ Nodes (6): create_memory(), createMemory(), _downloadModel(), embed(), getEmbedd ## Knowledge Gaps - **3349 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+3344 more) These have ≤1 connection - possible missing edges or undocumented components. -- **227 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **228 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ - **Why does `Pytest Testing` connect `Community 138` to `Authentication Core`, `Frontend Components`, `Community 129`, `Data Models & Types`, `Community 518`, `Community 135`, `Community 140`, `Community 527`, `Community 16`, `Community 18`, `Community 147`, `Community 24`, `Community 25`, `Community 27`, `Community 29`, `Community 32`, `Community 33`, `Community 40`, `Community 43`, `Community 44`, `Community 45`, `Community 49`, `Community 51`, `Community 59`, `Community 61`, `Community 67`, `Community 84`, `Community 120`, `Community 93`, `Community 477`, `Community 482`, `Community 100`, `Community 101`, `Community 102`, `Community 104`, `Community 500`, `Community 502`, `Community 504`, `Community 122`, `Community 251`?** _High betweenness centrality (0.096) - this node is a cross-community bridge._ -- **Why does `FastAPI` connect `Community 482` to `Community 129`, `Community 517`, `Community 519`, `Community 523`, `Community 18`, `Community 147`, `Community 536`, `Community 157`, `Community 33`, `Community 34`, `Community 40`, `Community 43`, `Community 172`, `Community 45`, `Community 54`, `Community 58`, `Community 59`, `Community 68`, `Community 71`, `Community 84`, `Community 120`, `Community 477`, `Community 500`, `Community 501`, `Community 504`?** +- **Why does `FastAPI` connect `Community 482` to `Community 129`, `Community 517`, `Community 519`, `Community 523`, `Community 18`, `Community 147`, `Community 536`, `Community 157`, `Community 33`, `Community 34`, `Community 40`, `Community 43`, `Community 45`, `Community 54`, `Community 58`, `Community 59`, `Community 576`, `Community 68`, `Community 71`, `Community 84`, `Community 120`, `Community 477`, `Community 500`, `Community 501`, `Community 504`?** _High betweenness centrality (0.044) - this node is a cross-community bridge._ - **Why does `UserManager` connect `Community 45` to `Community 256`, `Prometheus Agent`, `Community 519`, `Prometheus Memory`, `Community 524`, `Community 141`, `User Roles & Permissions`, `Community 148`, `Community 22`, `Community 28`, `Community 541`, `Community 37`, `Community 172`, `Community 47`, `Community 565`, `Community 58`, `Community 61`, `Community 578`, `Community 67`, `Community 603`, `Community 221`, `Community 99`, `Community 105`, `Community 107`, `Community 493`, `Community 112`, `Community 114`, `Community 120`, `Community 511`?** _High betweenness centrality (0.031) - this node is a cross-community bridge._ diff --git a/graphify-out/graph.json b/graphify-out/graph.json index d2f8a8a3..67036416 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -2190,7 +2190,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L1", "id": "main_app_authentication_authentication_py", - "community": 172, + "community": 576, "norm_label": "authentication.py" }, { @@ -2208,7 +2208,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L16", "id": "authentication_authentication_createuseraccount", - "community": 172, + "community": 576, "norm_label": "createuseraccount()" }, { @@ -2217,7 +2217,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L51", "id": "authentication_authentication_authenticategoogleuser", - "community": 172, + "community": 576, "norm_label": "authenticategoogleuser()" }, { @@ -2226,7 +2226,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L65", "id": "authentication_authentication_authenticateuser", - "community": 172, + "community": 576, "norm_label": "authenticateuser()" }, { @@ -2235,7 +2235,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L79", "id": "authentication_authentication_resolveuniqueusername", - "community": 172, + "community": 576, "norm_label": "resolveuniqueusername()" }, { @@ -9687,7 +9687,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L166", "id": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", - "community": 576, + "community": 132, "norm_label": "task 2: alembic migration for wallet tables" }, { @@ -9696,7 +9696,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L189", "id": "plans_2026_09_04_wallet_management_codeblock_6", - "community": 576, + "community": 132, "norm_label": "code:python (\"\"\"add wallet_holdings and wallet_lots tables)" }, { @@ -9705,7 +9705,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L248", "id": "plans_2026_09_04_wallet_management_codeblock_7", - "community": 576, + "community": 132, "norm_label": "code:python (import main.models.wallet)" }, { @@ -9714,7 +9714,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L262", "id": "plans_2026_09_04_wallet_management_codeblock_8", - "community": 576, + "community": 132, "norm_label": "code:bash (git add migrations/versions/wallet_tables_20260904_add_walle)" }, { @@ -9723,7 +9723,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L269", "id": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", - "community": 132, + "community": 599, "norm_label": "task 3: pure derivation math" }, { @@ -9732,7 +9732,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L281", "id": "plans_2026_09_04_wallet_management_codeblock_9", - "community": 132, + "community": 599, "norm_label": "code:python (from datetime import date)" }, { @@ -9741,7 +9741,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L325", "id": "plans_2026_09_04_wallet_management_codeblock_10", - "community": 132, + "community": 599, "norm_label": "code:python (from dataclasses import dataclass)" }, { @@ -9750,7 +9750,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L384", "id": "plans_2026_09_04_wallet_management_codeblock_11", - "community": 132, + "community": 599, "norm_label": "code:bash (git add main/app/wallet/__init__.py main/app/wallet/math.py )" }, { @@ -10819,7 +10819,7 @@ "label": "Global Constraints", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L13", + "source_location": "L15", "id": "plans_2026_09_29_stocks_cache_ttl_global_constraints", "community": 110, "norm_label": "global constraints" @@ -10828,7 +10828,7 @@ "label": "Review Focus (spec-implied inputs most likely to bite)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L25", + "source_location": "L27", "id": "plans_2026_09_29_stocks_cache_ttl_review_focus_spec_implied_inputs_most_likely_to_bite", "community": 110, "norm_label": "review focus (spec-implied inputs most likely to bite)" @@ -10837,7 +10837,7 @@ "label": "Task 1: TTL constants, 6h on the three data routes, header alignment", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L36", + "source_location": "L38", "id": "plans_2026_09_29_stocks_cache_ttl_task_1_ttl_constants_6h_on_the_three_data_routes_header_alignment", "community": 110, "norm_label": "task 1: ttl constants, 6h on the three data routes, header alignment" @@ -10846,7 +10846,7 @@ "label": "code:python (import re)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L50", + "source_location": "L52", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_1", "community": 110, "norm_label": "code:python (import re)" @@ -10855,7 +10855,7 @@ "label": "code:python (# Endpoint cache TTLs. STOCKS_TTL must stay <= STALE_AFTER_S)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L91", + "source_location": "L93", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_2", "community": 110, "norm_label": "code:python (# endpoint cache ttls. stocks_ttl must stay <= stale_after_s)" @@ -10864,7 +10864,7 @@ "label": "code:python (@endpointCache(ttl=STOCKS_TTL, key=\"stocks:historical:{searc)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L103", + "source_location": "L105", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_3", "community": 110, "norm_label": "code:python (@endpointcache(ttl=stocks_ttl, key=\"stocks:historical:{searc)" @@ -10873,7 +10873,7 @@ "label": "code:python (response.headers[\"Cache-Control\"] = f\"public, max-age={STOCK)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L112", + "source_location": "L114", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_4", "community": 110, "norm_label": "code:python (response.headers[\"cache-control\"] = f\"public, max-age={stock)" @@ -10882,7 +10882,7 @@ "label": "code:bash (git add main/controller/stocksapi_controller.py tests/test_s)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L129", + "source_location": "L131", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_5", "community": 110, "norm_label": "code:bash (git add main/controller/stocksapi_controller.py tests/test_s)" @@ -10891,7 +10891,7 @@ "label": "Task 2: Cache `/stocks/fields`", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L136", + "source_location": "L138", "id": "plans_2026_09_29_stocks_cache_ttl_task_2_cache_stocks_fields", "community": 110, "norm_label": "task 2: cache `/stocks/fields`" @@ -10900,7 +10900,7 @@ "label": "code:python (import asyncio)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L152", + "source_location": "L154", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_6", "community": 110, "norm_label": "code:python (import asyncio)" @@ -10909,7 +10909,7 @@ "label": "code:python (@pytest_asyncio.fixture(scope=\"module\", loop_scope=\"module\",)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L165", + "source_location": "L167", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_7", "community": 110, "norm_label": "code:python (@pytest_asyncio.fixture(scope=\"module\", loop_scope=\"module\",)" @@ -10918,7 +10918,7 @@ "label": "code:python (@router.get(\"/fields\", operation_id=\"list_fields\"))", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L220", + "source_location": "L222", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_8", "community": 110, "norm_label": "code:python (@router.get(\"/fields\", operation_id=\"list_fields\"))" @@ -10927,7 +10927,7 @@ "label": "code:python (response.headers[\"Cache-Control\"] = f\"public, max-age={STOCK)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L228", + "source_location": "L230", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_9", "community": 110, "norm_label": "code:python (response.headers[\"cache-control\"] = f\"public, max-age={stock)" @@ -10936,7 +10936,7 @@ "label": "code:bash (git add main/controller/stocksapi_controller.py tests/test_s)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L247", + "source_location": "L249", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_10", "community": 110, "norm_label": "code:bash (git add main/controller/stocksapi_controller.py tests/test_s)" @@ -10945,7 +10945,7 @@ "label": "Task 3: Invalidate the endpoint cache on feather reload", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L254", + "source_location": "L256", "id": "plans_2026_09_29_stocks_cache_ttl_task_3_invalidate_the_endpoint_cache_on_feather_reload", "community": 110, "norm_label": "task 3: invalidate the endpoint cache on feather reload" @@ -10954,7 +10954,7 @@ "label": "code:python (def test_feather_reload_drops_cached_bodies(monkeypatch):)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L269", + "source_location": "L271", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_11", "community": 110, "norm_label": "code:python (def test_feather_reload_drops_cached_bodies(monkeypatch):)" @@ -10963,7 +10963,7 @@ "label": "code:python (def clearEndpointCache() -> None:)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L301", + "source_location": "L303", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_12", "community": 110, "norm_label": "code:python (def clearendpointcache() -> none:)" @@ -10972,7 +10972,7 @@ "label": "code:python (from main.app.stocks_api.compress import rebuildAbbrevs)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L311", + "source_location": "L313", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_13", "community": 110, "norm_label": "code:python (from main.app.stocks_api.compress import rebuildabbrevs)" @@ -10981,7 +10981,7 @@ "label": "code:bash (git add main/app/stocks_api/sync_cache.py main/app/stocks_ap)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L333", + "source_location": "L335", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_14", "community": 110, "norm_label": "code:bash (git add main/app/stocks_api/sync_cache.py main/app/stocks_ap)" @@ -10990,7 +10990,7 @@ "label": "Task 4: Measure the 6h window (RSS) and record the verdict", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L340", + "source_location": "L342", "id": "plans_2026_09_29_stocks_cache_ttl_task_4_measure_the_6h_window_rss_and_record_the_verdict", "community": 110, "norm_label": "task 4: measure the 6h window (rss) and record the verdict" @@ -10999,7 +10999,7 @@ "label": "code:bash (docker compose up -d --build api)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L352", + "source_location": "L354", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_15", "community": 110, "norm_label": "code:bash (docker compose up -d --build api)" @@ -11008,7 +11008,7 @@ "label": "code:powershell ($Key = $env:PERF_API_KEY)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L363", + "source_location": "L365", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_16", "community": 110, "norm_label": "code:powershell ($key = $env:perf_api_key)" @@ -11017,7 +11017,7 @@ "label": "code:bash (docker stats --no-stream --format \"{{.Name}},{{.MemUsage}},{)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L376", + "source_location": "L378", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_17", "community": 110, "norm_label": "code:bash (docker stats --no-stream --format \"{{.name}},{{.memusage}},{)" @@ -11026,7 +11026,7 @@ "label": "code:markdown (# Stocks endpoint cache TTL \u2014 6h RSS check)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L384", + "source_location": "L386", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_18", "community": 110, "norm_label": "code:markdown (# stocks endpoint cache ttl \u2014 6h rss check)" @@ -11035,7 +11035,7 @@ "label": "code:bash (.\\ci.ps1)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L402", + "source_location": "L404", "id": "plans_2026_09_29_stocks_cache_ttl_codeblock_19", "community": 110, "norm_label": "code:bash (.\\ci.ps1)" @@ -11044,7 +11044,7 @@ "label": "Execution Handoff", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-29-stocks-cache-ttl.md", - "source_location": "L410", + "source_location": "L412", "id": "plans_2026_09_29_stocks_cache_ttl_execution_handoff", "community": 110, "norm_label": "execution handoff" @@ -51869,7 +51869,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L905", - "community": 39, + "community": 17, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_905" }, @@ -55478,7 +55478,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L945", - "community": 17, + "community": 39, "norm_label": "multiple search terms with tickerindex.", "id": "tests_test_stocks_api_coverage_rationale_945" }, @@ -150454,5 +150454,5 @@ "label": "User Authentication & Authorization" } ], - "built_at_commit": "679c3dfccf596dfcedaeda2c9fd39bab574ca233" + "built_at_commit": "3e2a330c5c7ebebde0b7c6bf59c4318e6cee3067" } \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index 6b53e1a2..bf7c3656 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -660,8 +660,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-09-29-stocks-cache-ttl.md": { - "mtime": 1790717665.1465101, - "ast_hash": "df8c020fbd56367a6e1d0c215a5524c4", + "mtime": 1790725620.1542468, + "ast_hash": "b7a877f2284007b51867458bf63f36c1", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-09-29-uvicorn-worker-scaling.md": { From e7ac74321e9dd166254cd676f1c5658310676ca5 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 20:58:49 -0300 Subject: [PATCH 7/8] req --- graphify-out/.graphify_labels.json | 20 +- graphify-out/GRAPH_REPORT.md | 326 +++++---- graphify-out/graph.json | 1048 ++++++++++++++-------------- graphify-out/manifest.json | 9 +- main/app/stocks_api/key.py | 22 +- 5 files changed, 770 insertions(+), 655 deletions(-) diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index 021bd946..70ae8d0a 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -599,6 +599,24 @@ "597": "Community 597", "598": "Community 598", "599": "Community 599", + "600": "Community 600", + "601": "Community 601", + "602": "Community 602", "603": "Community 603", - "605": "Community 605" + "604": "Community 604", + "605": "Community 605", + "606": "Community 606", + "607": "Community 607", + "608": "Community 608", + "609": "Community 609", + "610": "Community 610", + "611": "Community 611", + "612": "Community 612", + "613": "Community 613", + "614": "Community 614", + "615": "Community 615", + "616": "Community 616", + "617": "Community 617", + "618": "Community 618", + "619": "Community 619" } diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index eb40e8ed..a4182c39 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - server (2026-09-29) ## Corpus Check -- 134 files · ~103,071 words +- 135 files · ~103,094 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 6628 nodes · 8877 edges · 602 communities (374 shown, 228 thin omitted) +- 6630 nodes · 8878 edges · 620 communities (387 shown, 233 thin omitted) - Extraction: 85% EXTRACTED · 15% INFERRED · 0% AMBIGUOUS · INFERRED: 1329 edges (avg confidence: 0.69) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `3e2a330c` +- Built from commit: `ffa33ed8` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -601,8 +601,26 @@ - [[_COMMUNITY_Community 597|Community 597]] - [[_COMMUNITY_Community 598|Community 598]] - [[_COMMUNITY_Community 599|Community 599]] +- [[_COMMUNITY_Community 600|Community 600]] +- [[_COMMUNITY_Community 601|Community 601]] +- [[_COMMUNITY_Community 602|Community 602]] - [[_COMMUNITY_Community 603|Community 603]] +- [[_COMMUNITY_Community 604|Community 604]] - [[_COMMUNITY_Community 605|Community 605]] +- [[_COMMUNITY_Community 606|Community 606]] +- [[_COMMUNITY_Community 607|Community 607]] +- [[_COMMUNITY_Community 608|Community 608]] +- [[_COMMUNITY_Community 609|Community 609]] +- [[_COMMUNITY_Community 610|Community 610]] +- [[_COMMUNITY_Community 611|Community 611]] +- [[_COMMUNITY_Community 612|Community 612]] +- [[_COMMUNITY_Community 613|Community 613]] +- [[_COMMUNITY_Community 614|Community 614]] +- [[_COMMUNITY_Community 615|Community 615]] +- [[_COMMUNITY_Community 616|Community 616]] +- [[_COMMUNITY_Community 617|Community 617]] +- [[_COMMUNITY_Community 618|Community 618]] +- [[_COMMUNITY_Community 619|Community 619]] ## God Nodes (most connected - your core abstractions) 1. `vocab` - 456 edges @@ -636,7 +654,7 @@ - **Configuration & Database Infrastructure** — config_Config, config_engine, config_stocksEngine [INFERRED] - **User Authentication & Authorization** — user_service, authentication, user_roles, permission_system [INFERRED] -## Communities (602 total, 228 thin omitted) +## Communities (620 total, 233 thin omitted) ### Community 0 - "Stocks API Endpoints" Cohesion: 0.0 @@ -651,8 +669,8 @@ Cohesion: 0.13 Nodes (21): Thin async wrapper around the CubeSandbox/E2B HTTP API. All methods are sta, SandboxManager, _mock_forgevm(), Unit tests for SandboxManager — HTTP calls mocked via a fake client class., Wire up mock forgevm AsyncClient that returns sandbox with all methods., Wire up mock forgevm AsyncClient that returns sandbox with all methods., test_create_sandbox(), test_destroy_sandbox() (+13 more) ### Community 3 - "Prometheus Agent" -Cohesion: 0.1 -Nodes (16): _make_stocks_df(), Return a small DataFrame with the columns the query module expects., Return a small DataFrame with the columns the query module expects., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48. (+8 more) +Cohesion: 0.11 +Nodes (12): _make_stocks_df(), Return a small DataFrame with the columns the query module expects., Return a small DataFrame with the columns the query module expects., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48., Tests covering query.py lines 22-48. (+4 more) ### Community 4 - "Data Models & Types" Cohesion: 0.11 @@ -679,8 +697,8 @@ Cohesion: 0.11 Nodes (17): code:python (def filterCotationColumn(series: pd.Series, startDate, endDa), code:bash (git add -A), code:bash (git add main/app/stocks_api/query.py), code:python (def buildCotationDateIndex(df: pd.DataFrame, col: str = "COT), code:python (def filterCotationColumn(series: pd.Series, startDate, endDa), code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que), code:python (PARQUET_PATH = Path(__file__).parent / "stocks_cache.parquet), code:bash (git add main/app/stocks_api/cache.py) (+9 more) ### Community 10 - "Prometheus Memory" -Cohesion: 0.06 -Nodes (27): Tests for queryCotations and /stocks/cotations., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, Tests for queryCotations and /stocks/cotations., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list., dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list. (+19 more) +Cohesion: 0.05 +Nodes (35): Tests for queryCotations and /stocks/cotations., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, Tests for queryCotations and /stocks/cotations., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list., dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list. (+27 more) ### Community 11 - "Auth Utilities & SSO" Cohesion: 0.05 @@ -695,20 +713,20 @@ Cohesion: 0.06 Nodes (31): code:python ("""Measure whether the stocks query hot path is GIL-bound.), code:bash (git add main/utils/migrator.py tests/test_migrator_guard.py), code:python (import importlib), code:python (DB_POOL_SIZE = int(os.getenv("DB_POOL_SIZE", "20"))), code:bash (git add config.py tests/test_config_pools.py), code:python (import importlib), code:python (if __name__ == "__main__":), code:python (if len(instances) > 1 and fcntl is None: # pragma: no cover) (+23 more) ### Community 14 - "User Roles & Permissions" -Cohesion: 0.05 -Nodes (35): _make_stocksapi_client(), Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 47: GET /stocks/fundamental., Covers line 47: GET /stocks/fundamental., Covers line 47: GET /stocks/fundamental. (+27 more) +Cohesion: 0.06 +Nodes (28): _make_stocksapi_client(), Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 47: GET /stocks/fundamental., Covers line 47: GET /stocks/fundamental., Covers line 47: GET /stocks/fundamental. (+20 more) ### Community 15 - "Community 15" Cohesion: 0.05 Nodes (38): code:block1 (User 123: "Analyze PETR4 vs VALE3 correlation"), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (TOOL_REGISTRY: dict[str, Any] = {), code:bash (git add main/app/prometheus/tools.py tests/test_sandbox_tool), code:python (import pytest), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (async def streamMessage(self, query=None, sessionId=None, db), code:python (## Code Sandbox (On-Demand)) (+30 more) ### Community 16 - "Community 16" -Cohesion: 0.08 -Nodes (20): executeStateTool(), get_state(), Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, test_get_state_no_state_returns_error(), test_dispatch_get_state() (+12 more) +Cohesion: 0.15 +Nodes (18): executeStateTool(), get_state(), Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, test_dispatch_get_state(), test_dispatch_set_state() (+10 more) ### Community 17 - "Community 17" -Cohesion: 0.07 -Nodes (25): Two dates in the range, both valid., Two dates in the range, both valid., Two dates in the range, both valid., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., search.strip() == '' should still dedup (line 181)., Search with no index match falls back to string startswith., Two dates in the range, both valid. (+17 more) +Cohesion: 0.05 +Nodes (40): Invalid date -> inner 400 passes through (not wrapped as 500)., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., search.strip() == '' should still dedup (line 181)., search.strip() == '' should still dedup (line 181)., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500. (+32 more) ### Community 18 - "Community 18" Cohesion: 0.07 @@ -751,8 +769,8 @@ Cohesion: 0.15 Nodes (15): getUserMemories(), getRelevanceScore(), _FakeMemory, A memory with no lastAccessedAt should use baseScore as-is., Scores are deterministic — no cron mutation needed., Same memory at different points in time yields different scores., A memory accessed 10x (baseScore 1.0) should still outrank a memory acce, A rarely-used old memory should lose to a popular fresh one. (+7 more) ### Community 28 - "Community 28" -Cohesion: 0.06 -Nodes (34): Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Pass field name WITHOUT year (how categorizeColumns returns them)., Pass field name WITHOUT year (how categorizeColumns returns them)., No historical data columns -> inner 400 caught by outer except -> 500., Pass field name WITHOUT year (how categorizeColumns returns them). (+26 more) +Cohesion: 0.05 +Nodes (42): Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Pass field name WITHOUT year (how categorizeColumns returns them)., Pass field name WITHOUT year (how categorizeColumns returns them)., No historical data columns -> inner 400 caught by outer except -> 500., Pass field name WITHOUT year (how categorizeColumns returns them). (+34 more) ### Community 29 - "Community 29" Cohesion: 0.08 @@ -771,8 +789,8 @@ Cohesion: 0.11 Nodes (12): ToolContext — bundles all dependencies for tool execution. Replace passing user, Single dependency bundle for tool execution. Created once per request in ag, Extract userId from user dict if not explicitly set., ToolContext, Unit tests for ToolContext dataclass., Dataclass equality works out of the box., Explicit userId takes precedence over user dict., Two contexts share no mutable defaults. (+4 more) ### Community 33 - "Community 33" -Cohesion: 0.06 -Nodes (23): BaseHTTPMiddleware, app(), Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter (+15 more) +Cohesion: 0.12 +Nodes (14): BaseHTTPMiddleware, app(), Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter (+6 more) ### Community 34 - "Community 34" Cohesion: 0.11 @@ -795,8 +813,8 @@ Cohesion: 0.07 Nodes (27): code:json ([), code:javascript (const loadHistory = async (sid) => {), code:jsx (export default function MessageList({ messages, toolEvents, ), code:javascript (const loadHistory = async (sid) => {), code:jsx (export default function AgentLoop({ toolEvents, turnMetrics ), code:bash (git add frontend/src/App.jsx frontend/src/components/Message), code:bash (docker-compose up -d --build), code:sql (SELECT COUNT(*) FROM prometheus WHERE JSON_CONTAINS_PATH(his) (+19 more) ### Community 39 - "Community 39" -Cohesion: 0.08 -Nodes (24): search.strip() == '' should still dedup (line 181)., search.strip() == '' should still dedup (line 181)., search.strip() == '' should still dedup (line 181)., DataFrame without TIME column., Invalid date -> inner 400 caught by outer except -> 500., DataFrame without TIME column., DataFrame without TIME column., search.strip() == '' should still dedup (line 181). (+16 more) +Cohesion: 0.11 +Nodes (17): Multiple search terms with tickerIndex., Multiple search terms with tickerIndex., Multiple search terms with tickerIndex., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., Multiple search terms with tickerIndex., Multiple search terms with tickerIndex. (+9 more) ### Community 40 - "Community 40" Cohesion: 0.12 @@ -807,24 +825,24 @@ Cohesion: 0.07 Nodes (32): API endpoints, Authentication Management, code:bash (curl http://localhost:3200/auth/health), code:bash (curl -X POST "http://localhost:3200/auth/register" \), code:bash (curl -X POST "http://localhost:3200/auth/login" \), code:bash (curl -X POST "http://localhost:3200/auth/logout" \), code:bash (# Browser redirect; redirect_url optional, else Referer head), code:mermaid (graph TD) (+24 more) ### Community 42 - "Community 42" -Cohesion: 0.16 -Nodes (8): StocksCacheManager, Tests for dynamic ticker index feature, Ticker index should be built when cache is loaded, Ticker index should contain all tickers from cache, Ticker index should be case-insensitive, Looking up ticker should return valid row index, Ticker index should be rebuilt when cache refreshes, TestTickerIndex +Cohesion: 0.09 +Nodes (16): StocksCacheManager, Tests for dynamic ticker index feature, Ticker index should be built when cache is loaded, Ticker index should contain all tickers from cache, Ticker index should be case-insensitive, Looking up ticker should return valid row index, Ticker index should be rebuilt when cache refreshes, TestTickerIndex (+8 more) ### Community 43 - "Community 43" -Cohesion: 0.12 -Nodes (9): Authentication System, createAccessToken(), hashPassword(), verifyPassword(), Google OAuth, JWT Authentication, TestAuthUtil, TestAuthUtilEdgeCases (+1 more) +Cohesion: 0.15 +Nodes (5): authenticateUser(), hashPassword(), verifyPassword(), TestAuthUtil, TestAuthUtilEdgeCases ### Community 44 - "Community 44" Cohesion: 0.14 Nodes (3): UserSession, TestSessionExpiration, TestUserSessionModel ### Community 45 - "Community 45" -Cohesion: 0.04 -Nodes (60): BaseModel, IntFlag, OrunmilaMemory, Orunmila, OrunmilaChatManager, MemoryCandidate, OrunmilaMemory, SandboxManager (+52 more) +Cohesion: 0.06 +Nodes (29): Covers line 16: empty password raises ValueError., Covers line 16: empty password raises ValueError., Covers line 16: empty password raises ValueError., Covers line 16: empty password raises ValueError., Covers line 16: empty password raises ValueError., Covers line 13: UserManager.__init__., Covers line 13: UserManager.__init__., Covers line 13: UserManager.__init__. (+21 more) ### Community 46 - "Community 46" Cohesion: 0.09 -Nodes (20): Regression: queryFundamental must not mutate the shared cache TIME column., Regression: queryFundamental must not mutate the shared cache TIME column., Regression: queryFundamental must not mutate the shared cache TIME column., Single invalid date -> inner 400 passes through., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Invalid fields now raise 400 with actionable error message. (+12 more) +Nodes (21): Regression: queryFundamental must not mutate the shared cache TIME column., Regression: queryFundamental must not mutate the shared cache TIME column., Regression: queryFundamental must not mutate the shared cache TIME column., Single invalid date -> inner 400 passes through., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Single invalid date -> inner 400 caught by outer except -> 500., Invalid fields now raise 400 with actionable error message. (+13 more) ### Community 47 - "Community 47" Cohesion: 0.1 @@ -835,8 +853,8 @@ Cohesion: 0.06 Nodes (34): Backend (COMMIT), code:bash (cd frontend && pnpm add @openuidev/react-lang), code:bash (rm frontend/src/components/MdocMessage.jsx), code:python ("""OpenUI Lang system prompt section for Prometheus agent.), code:block12, code:block13, code:block14, code:block15 (+26 more) ### Community 49 - "Community 49" -Cohesion: 0.08 -Nodes (19): dispatchToolCall(), TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes, test_memory_tool_skipped_without_user(), test_non_memory_tool_not_routed_to_executeMemoryTool(), test_non_registry_tool_not_routed(), test_save_memory_routed_to_executeMemoryTool(), test_save_memory_routed_via_registry(), test_search_memory_routed_to_executeMemoryTool() (+11 more) +Cohesion: 0.13 +Nodes (18): dispatchToolCall(), TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes, test_memory_tool_skipped_without_user(), test_non_memory_tool_not_routed_to_executeMemoryTool(), test_non_registry_tool_not_routed(), test_save_memory_routed_to_executeMemoryTool(), test_save_memory_routed_via_registry(), test_search_memory_routed_to_executeMemoryTool() (+10 more) ### Community 50 - "Community 50" Cohesion: 0.07 @@ -855,8 +873,8 @@ Cohesion: 0.1 Nodes (39): applyUpdate(), archiveDead(), clearAll(), clearAllAsync(), count_memories(), countMemories(), countTokensCached(), decayScores() (+31 more) ### Community 54 - "Community 54" -Cohesion: 0.11 -Nodes (18): Store a value in state. Marks state as changed for context injection., compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest() (+10 more) +Cohesion: 0.33 +Nodes (10): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), rebuildAbbrevs() (+2 more) ### Community 55 - "Community 55" Cohesion: 0.11 @@ -872,11 +890,11 @@ Nodes (15): Performance benchmark tests for stocks API, Performance benchmark te ### Community 58 - "Community 58" Cohesion: 0.15 -Nodes (16): getGoogleSSO(), googleCallback(), googleLogin(), isSecureScheme(), issueSessionCookie(), login(), logout(), register() (+8 more) +Nodes (17): getGoogleSSO(), createAccessToken(), googleCallback(), googleLogin(), isSecureScheme(), issueSessionCookie(), login(), logout() (+9 more) ### Community 59 - "Community 59" -Cohesion: 0.09 -Nodes (31): lifespan(), status(), Tests for main/utils/connectivity.py — covers all branches., checkServiceConnection — success, not found, errors., checkServiceConnection — success, not found, errors., checkMySqlConnection — success, errors, engine=None paths., checkMySqlConnection — success, errors, engine=None paths., test_both_engines_ok() (+23 more) +Cohesion: 0.17 +Nodes (20): Tests for main/utils/connectivity.py — covers all branches., test_both_engines_ok(), test_connection_error(), test_generic_exception(), test_non_200_status(), test_non_stocks_prefix(), test_request_exception(), test_service_not_found() (+12 more) ### Community 60 - "Community 60" Cohesion: 0.09 @@ -891,8 +909,8 @@ Cohesion: 0.1 Nodes (20): architectures, attention_probs_dropout_prob, gradient_checkpointing, hidden_act, hidden_dropout_prob, hidden_size, initializer_range, intermediate_size (+12 more) ### Community 63 - "Community 63" -Cohesion: 0.28 -Nodes (4): Shared query pipeline for historical and fundamental endpoints., Fetch live prices for B3 tickers via yfinance. B3 tickers must match, sanitizeNanValues(), StocksQueryManager +Cohesion: 0.24 +Nodes (5): Store a value in state. Marks state as changed for context injection., Shared query pipeline for historical and fundamental endpoints., Fetch live prices for B3 tickers via yfinance. B3 tickers must match, sanitizeNanValues(), StocksQueryManager ### Community 64 - "Community 64" Cohesion: 0.06 @@ -927,12 +945,12 @@ Cohesion: 0.11 Nodes (19): API Key System, B3 Scraper, Fundamental Data, Gemini Model, Historical Data, Ma'at Stock Algorithm, Mansa Server, MySQL Database (+11 more) ### Community 72 - "Community 72" -Cohesion: 0.15 -Nodes (12): initialize(), P5: register memory maintenance on the shared scheduler. Kept in this ser, registerMemoryMaintenanceJob(), initialize(), P5: register the session-cleanup job on the shared scheduler. Kept in thi, registerSessionCleanupJobs(), UserService, getSharedScheduler() (+4 more) +Cohesion: 0.19 +Nodes (9): initialize(), P5: register the session-cleanup job on the shared scheduler. Kept in thi, registerSessionCleanupJobs(), UserService, getSharedScheduler(), P5: single shared BackgroundScheduler for all services. Replaces the 4 per-serv, Return the process-wide scheduler, starting it on first use., Register func on the shared scheduler (replaces any same-id job). trigger i (+1 more) ### Community 73 - "Community 73" -Cohesion: 0.16 -Nodes (6): _parse_date(), parseDateEnd(), parseDateRange(), parseDateStart(), TestParseDateRange, TestParseDateRange +Cohesion: 0.19 +Nodes (3): parseDateRange(), TestParseDateRange, TestParseDateRange ### Community 74 - "Community 74" Cohesion: 0.11 @@ -959,8 +977,8 @@ Cohesion: 0.05 Nodes (44): cn(), AlertDialogAction(), AlertDialogCancel(), AlertDialogContent(), AlertDialogDescription(), AlertDialogFooter(), AlertDialogHeader(), AlertDialogMedia() (+36 more) ### Community 80 - "Community 80" -Cohesion: 0.1 -Nodes (20): buildSummary(), charCount(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers() (+12 more) +Cohesion: 0.14 +Nodes (19): buildSummary(), charCount(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers() (+11 more) ### Community 81 - "Community 81" Cohesion: 0.15 @@ -968,15 +986,15 @@ Nodes (13): getLiveCotation(), Get real-time price quotation for a single Brazil ### Community 82 - "Community 82" Cohesion: 0.11 -Nodes (17): arrowTypeFor(), buildCotationDateIndex(), buildFeatherCache(), buildTickerIndex(), optimizeDtypes(), P1: establish the sorted-cache invariant once at load/refresh. Sorts by (, P1: first-occurrence index over a sortCacheFrame-sorted frame. The cache, Get cached stocks data with optional column filtering. (+9 more) +Nodes (16): arrowTypeFor(), buildCotationDateIndex(), buildFeatherCache(), buildTickerIndex(), optimizeDtypes(), P1: establish the sorted-cache invariant once at load/refresh. Sorts by (, P1: first-occurrence index over a sortCacheFrame-sorted frame. The cache, Get cached stocks data with optional column filtering. (+8 more) ### Community 83 - "Community 83" Cohesion: 0.1 Nodes (21): B3 Market Scraper, Brazilian Stocks Market Scraper, code:env (SCRAPER_ENABLED=FALSE # default False), code:json ({), Configuration Parameters, Constraint Engine ($\Lambda$), Engines, Fundamental Engine ($\Phi$) (+13 more) ### Community 84 - "Community 84" -Cohesion: 0.05 -Nodes (23): chat(), chat_stream(), createSession(), downloadWorkspaceFile(), _forward(), getHistory(), Verify the user owns the session, raise 403 otherwise., Verify the user owns the session, raise 403 otherwise. (+15 more) +Cohesion: 0.14 +Nodes (12): chat(), chat_stream(), createSession(), downloadWorkspaceFile(), _forward(), getHistory(), Verify the user owns the session, raise 403 otherwise., Verify the user owns the session, raise 403 otherwise. (+4 more) ### Community 85 - "Community 85" Cohesion: 0.21 @@ -1011,8 +1029,8 @@ Cohesion: 0.09 Nodes (21): aliases, components, hooks, lib, ui, utils, iconLibrary, menuAccent (+13 more) ### Community 93 - "Community 93" -Cohesion: 0.12 -Nodes (10): System prompt should instruct LLM about harness state usage., System prompt should instruct LLM about harness state usage., System prompt should instruct LLM about harness state usage., System prompt should instruct LLM about memory vs state., System prompt should instruct LLM about memory vs state., System prompt should instruct LLM about memory vs state., System prompt should instruct LLM about memory vs state., TestSendMessageStateIntegration (+2 more) +Cohesion: 0.11 +Nodes (11): Pytest Testing, System prompt should instruct LLM about harness state usage., System prompt should instruct LLM about harness state usage., System prompt should instruct LLM about harness state usage., System prompt should instruct LLM about memory vs state., System prompt should instruct LLM about memory vs state., System prompt should instruct LLM about memory vs state., System prompt should instruct LLM about memory vs state. (+3 more) ### Community 94 - "Community 94" Cohesion: 0.12 @@ -1035,16 +1053,16 @@ Cohesion: 0.28 Nodes (6): extractTokenPayload(), Tests for extractTokenPayload — the standalone token extraction dependency., Create a mock Starlette Request with given headers., Authorization: Bearer (empty) — no token after Bearer., Authorization: Basic xxx — not Bearer, so no token found., TestExtractTokenPayload ### Community 99 - "Community 99" -Cohesion: 0.04 -Nodes (46): _make_prometheus_client(), Covers lines 95-98: session deleted., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 111-112: sessionId is None, new session created., Covers lines 111-112: sessionId is None, new session created., Covers lines 118-119: sessionId is None, new session created. (+38 more) +Cohesion: 0.1 +Nodes (17): Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}., Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}., Covers lines 65-68: title updated successfully., Covers lines 65-68: title updated successfully., Covers lines 62-63, 65-68: PUT /prometheus/sessions/{sessionId}., Covers lines 65-68: title updated successfully., Covers lines 62-63: not the session owner., Covers lines 62-63: not the session owner. (+9 more) ### Community 100 - "Community 100" Cohesion: 0.16 -Nodes (6): _assert_gemini_safe(), Assert a tool function has only Gemini-compatible parameter types., Assert a tool function has only Gemini-compatible parameter types., test_set_state_no_state_returns_error(), test_tool_has_gemini_safe_signature(), TestStateToolFunctions +Nodes (6): _assert_gemini_safe(), Assert a tool function has only Gemini-compatible parameter types., Assert a tool function has only Gemini-compatible parameter types., test_get_state_no_state_returns_error(), test_tool_has_gemini_safe_signature(), TestStateToolFunctions ### Community 101 - "Community 101" -Cohesion: 0.1 -Nodes (16): Tests for connection pool configuration, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Query manager should have deserialize method, Tests for optimized search filtering, Filter should use ticker index for O(1) lookup, Performance tests for query operations, Query should respond within 1 second (+8 more) +Cohesion: 0.07 +Nodes (20): Tests for connection pool configuration, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Query manager should have deserialize method, Integration tests for all query optimizations, All optimizations should be implemented, Query filter should use ticker index, Tests for optimized search filtering (+12 more) ### Community 102 - "Community 102" Cohesion: 0.11 @@ -1087,7 +1105,7 @@ Cohesion: 0.14 Nodes (13): code:python (import pytest), code:python (import logging), code:bash (git add main/app/prometheus/state.py tests/test_harness_stat), File Map, Global Constraints, Phase 1: HarnessState (In-Memory Agent Scratchpad), Prometheus Harness — Master Implementation Plan (v2: CubeSandbox + On-Demand), Relationship to Existing Systems (+5 more) ### Community 112 - "Community 112" -Cohesion: 0.1 +Cohesion: 0.11 Nodes (16): Calling with all None returns 400., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Calling with all None returns 400. (+8 more) ### Community 113 - "Community 113" @@ -1103,8 +1121,8 @@ Cohesion: 0.17 Nodes (11): dateOnly(), EditDividendDialog(), EditLotDialog(), fmtBRL(), fmtMoney(), KIND_STYLES, lotTitle(), deleteDividend() (+3 more) ### Community 116 - "Community 116" -Cohesion: 0.13 -Nodes (17): _build_system_prompt(), buildSystemPrompt(), chatSession(), _execute_memory_tool(), executeMemoryTool(), _get_client(), _get_memory_tools(), getClient() (+9 more) +Cohesion: 0.11 +Nodes (21): create_memory(), createMemory(), embed(), _build_system_prompt(), buildSystemPrompt(), chatSession(), _execute_memory_tool(), executeMemoryTool() (+13 more) ### Community 117 - "Community 117" Cohesion: 0.15 @@ -1119,16 +1137,16 @@ Cohesion: 0.07 Nodes (26): code:python ("""Tests for SandboxManager file mutation helpers (delete_fi), code:python (from main.app.prometheus.sandbox import SandboxManager, host), code:python (@router.post("/workspace/upload")), code:bash (git add main/controller/prometheus_controller.py tests/test_), code:python (from unittest.mock import patch, MagicMock), code:python (from main.app.prometheus.sandbox import SandboxManager, host), code:python (async def serve_file(path: str, **_) -> dict:), code:python ("serve_file": serve_file,) (+18 more) ### Community 120 - "Community 120" -Cohesion: 0.07 -Nodes (43): _make_auth_client(), Tests to cover uncovered lines across controllers, UserManager, and auth util., Return (client, app) with auth + user routers and mocked getSession., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126, 131, 135-136., Covers lines 126, 131, 135-136., Covers lines 126-136: DELETE /user/sessions/{sessionId}. (+35 more) +Cohesion: 0.08 +Nodes (40): _make_auth_client(), _make_prometheus_client(), Tests to cover uncovered lines across controllers, UserManager, and auth util., Covers lines 44-54, 63, 66-71: register success, ValueError, generic Exception., Covers lines 44-54, 63, 66-71: register success, ValueError, generic Exception., Covers lines 87-93, 102: login success and failure paths., Covers lines 87-93, 102: login success and failure paths., Return (client, app) with auth + user routers and mocked getSession. (+32 more) ### Community 121 - "Community 121" Cohesion: 0.21 Nodes (12): code:python (import inspect), code:python (from main.app.prometheus.sandbox import SandboxManager), code:python (TOOL_REGISTRY: dict[str, Any] = {), code:python (## Code Sandbox (On-Demand)), code:bash (git add main/app/prometheus/agent.py), code:dockerfile (FROM python:3.11-slim), code:bash (git add Dockerfile.sandbox), Phase 6: Agent Integration (All Layers) (+4 more) ### Community 122 - "Community 122" -Cohesion: 0.05 -Nodes (39): TestCleanup, Tests for main/utils/logging_config.py — covers DiscordHandler branches., test_discord_disabled(), test_discord_no_webhook(), test_exception_in_submit(), test_level_below_error(), test_message_truncation(), test_setup_discord_handler_disabled() (+31 more) +Cohesion: 0.14 +Nodes (11): test_setup_discord_handler_disabled(), test_setup_discord_handler_enabled(), TestSetupLogging, Many concurrent emit() calls must not create more threads than max_workers., Verify that DiscordHandler submits to a bounded executor, not raw threads., The module-level discordExecutor must exist with max_workers <= 5., DiscordHandler.emit() must use discordExecutor.submit, not Thread.start., TestDiscordHandlerThreadPool (+3 more) ### Community 123 - "Community 123" Cohesion: 0.17 @@ -1164,7 +1182,7 @@ Nodes (9): Same input → same hash., Different inputs → different hashes., Re ### Community 132 - "Community 132" Cohesion: 0.25 -Nodes (7): code:python ("""add wallet_holdings and wallet_lots tables), code:python (import main.models.wallet), code:bash (git add migrations/versions/wallet_tables_20260904_add_walle), File Structure, Global Constraints, Task 2: Alembic migration for wallet tables, Wallet Management (Thoth/Iyagba) Implementation Plan +Nodes (7): code:python (from dataclasses import dataclass), code:bash (git add main/app/wallet/__init__.py main/app/wallet/math.py ), code:python (from datetime import date), File Structure, Global Constraints, Task 3: Pure derivation math, Wallet Management (Thoth/Iyagba) Implementation Plan ### Community 133 - "Community 133" Cohesion: 0.18 @@ -1175,28 +1193,28 @@ Cohesion: 0.18 Nodes (11): code:yaml (volumes:), code:bash (git add config.py docker-compose.yml), code:python (import pytest), code:python (import logging), code:bash (git add main/app/prometheus/sandbox.py tests/test_sandbox.py), code:python (class PrometheusSettings(BaseMansaSettings):), code:yaml (environment:), code:yaml (sandbox:) (+3 more) ### Community 135 - "Community 135" -Cohesion: 0.07 -Nodes (11): ResultCache — SHA256-keyed file-based cache for computed results., File-based cache keyed by SHA256 of code. Stores results as JSON under:, Return cached result dict or None if miss., Store result with timestamp., Delete all cached results for a session., Check if a result exists for the given code., ResultCache, cache() (+3 more) +Cohesion: 0.11 +Nodes (4): cache(), Tests for ResultCache., TestColumnValidator, TestResultCache ### Community 136 - "Community 136" -Cohesion: 0.14 -Nodes (8): Performance benchmark tests for stocks API, Ticker index lookup should be O(1) - very fast, Prefix scan should be much slower than index lookup, Index lookup should be significantly faster than scan, Query cache should avoid recomputation, Column projection should reduce memory and time, Cache initialization should complete in reasonable time, TestPerformanceBenchmarks +Cohesion: 0.1 +Nodes (17): Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126, 131, 135-136., Covers lines 126, 131, 135-136., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126, 131, 135-136., Covers lines 127-129: session not found., Covers lines 127-129: session not found. (+9 more) ### Community 137 - "Community 137" -Cohesion: 0.19 -Nodes (19): countMemories(), deleteMemory(), extract(), findSimilarKey(), fullTextSearch(), getClient(), getMatrix(), getMemoryLimit() (+11 more) +Cohesion: 0.18 +Nodes (20): countMemories(), deleteMemory(), extract(), findSimilarKey(), fullTextSearch(), getClient(), getMatrix(), getMemoryLimit() (+12 more) ### Community 138 - "Community 138" -Cohesion: 0.11 -Nodes (9): Pytest Testing, Tests for main/utils/http_session.py — covers all branches., TestGetSession, test_stream_message_yields_text_chunks(), FakeChunk, GREEN test: streamMessage works without chatSession — MCP setup is inlined. Aft, streamMessage inlines MCP setup — chatSession no longer exists., streamMessage inlines MCP setup — chatSession no longer exists. (+1 more) +Cohesion: 0.18 +Nodes (6): test_stream_message_yields_text_chunks(), FakeChunk, GREEN test: streamMessage works without chatSession — MCP setup is inlined. Aft, streamMessage inlines MCP setup — chatSession no longer exists., streamMessage inlines MCP setup — chatSession no longer exists., TestStreamMessageNoChatSession ### Community 139 - "Community 139" Cohesion: 0.24 Nodes (6): Dataset, produce_data(), Train script for a single file Need to set the TPU address first: export XRT_TP, A class that handles the reddit data files, A class that handles one dataset, RedditDataset ### Community 140 - "Community 140" -Cohesion: 0.04 -Nodes (50): Base, PrometheusMemory, PrometheusMemory, OrunmilaSandbox, MemoryManager, PrometheusMemory, All memory operations. Stateless class methods., PrometheusService (+42 more) +Cohesion: 0.06 +Nodes (48): Base, BaseModel, OrunmilaMemory, PrometheusMemory, PrometheusMemory, MemoryCandidate, OrunmilaMemory, MemoryCandidate (+40 more) ### Community 141 - "Community 141" Cohesion: 0.24 @@ -1227,8 +1245,8 @@ Cohesion: 0.23 Nodes (3): categorizeColumns(), TestCategorizeColumns, TestCategorizeColumns ### Community 148 - "Community 148" -Cohesion: 0.09 -Nodes (20): Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 109-136: POST /prometheus/chat/stream (SSE)., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 120-121: existing session with verified ownership., Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat. (+12 more) +Cohesion: 0.07 +Nodes (24): Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 111-112: sessionId is None, new session created., Covers lines 111-112: sessionId is None, new session created., Covers lines 109-136: POST /prometheus/chat/stream (SSE)., Covers lines 118-119: sessionId is None, new session created., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 114-115, 117-120, 122: existing session with verified ownership. (+16 more) ### Community 149 - "Community 149" Cohesion: 0.18 @@ -1259,8 +1277,8 @@ Cohesion: 0.22 Nodes (8): API Endpoints, code:env (#), code:bash (python __init__.py), code:mermaid (graph TD), License, Prometheus, Usage, Workflow ### Community 157 - "Community 157" -Cohesion: 0.1 -Nodes (16): generateKey(), getFundamental(), JSONBytesResponse, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret (+8 more) +Cohesion: 0.17 +Nodes (12): getFundamental(), Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret, Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret (+4 more) ### Community 158 - "Community 158" Cohesion: 0.22 @@ -1371,8 +1389,8 @@ Cohesion: 0.25 Nodes (7): DEVELOPER:, PREMIUM:, Priorities (active order, 2026-09-29), Prometheus, STOCKS_API, USER:, User structure defined by string roles: ### Community 188 - "Community 188" -Cohesion: 0.2 -Nodes (9): Invalid date -> inner 400 passes through (not wrapped as 500)., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Invalid date -> inner 400 caught by outer except -> 500., Two dates in the range, both valid. (+1 more) +Cohesion: 0.11 +Nodes (6): Tests for run.py /status endpoint — covers status response structure., Create a test client for the status endpoint without running lifespan., Create a test client for the status endpoint without running lifespan., statusClient(), TestScraperTrigger, TestStatusEndpoint ### Community 189 - "Community 189" Cohesion: 0.36 @@ -1503,8 +1521,8 @@ Cohesion: 0.2 Nodes (9): Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148., Covers lines 143, 145, 147-148., Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148., Covers lines 143, 145, 147-148: POST /user/sessions/revoke-all., Covers lines 143, 145, 147-148. (+1 more) ### Community 222 - "Community 222" -Cohesion: 0.18 -Nodes (11): listFields(), Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental. (+3 more) +Cohesion: 0.1 +Nodes (15): generateKey(), JSONBytesResponse, listFields(), Sends pre-serialized JSON bytes without re-encoding (cache-friendly)., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental., Discover available field names before querying /historical or /fundamental. (+7 more) ### Community 223 - "Community 223" Cohesion: 0.4 @@ -1538,6 +1556,10 @@ Nodes (5): code:python (import pytest), code:python (import hashlib), code:bash Cohesion: 0.18 Nodes (11): 2.2.1 Complexity hotspots table (H1–H17 condensed to P0/P1/P2), 2.2.2 Blob inventory (LOC table + SRP evidence), 2.2.3 Mass data loads, 2.2.4 Phased fix roadmap (P0/P1/P2), §2.2 CODE EFFICIENCY — O(n²), Complexity & Blob Anti-Patterns, code:block4 (scraper.py:44 671 LOC — mass loads: SELECT * fetchma), code:powershell (ruff check . && ruff format --check .), code:powershell (pytest tests/test_stocks_cache_concurrency.py -v # ThreadPo) (+3 more) +### Community 231 - "Community 231" +Cohesion: 0.2 +Nodes (3): OrunmilaSession, createSession(), OrunmilaChatManager + ### Community 232 - "Community 232" Cohesion: 0.4 Nodes (5): Bucket A: Security Fixes (quick wins, 30 min), Bucket B: DB Session Cleanup (medium, 1-2 hrs), Bucket C: Testing (medium, 2-3 hrs), Bucket D: Infrastructure (large, 4+ hrs), Recommended Delegation Buckets @@ -1547,8 +1569,8 @@ Cohesion: 0.4 Nodes (5): 8. Build Sequence (4 phases, each independently shippable), Phase 0 — Sandbox foundation (1-2 days, no user-facing change), Phase 1 — MCP exposure of STOCKS_API (1 day), Phase 2 — Refactor PROMETHEUS to agentic (3-5 days, the big one), Phase 3 — Hardening (1-2 days, can ship incrementally) ### Community 234 - "Community 234" -Cohesion: 0.32 -Nodes (14): create(), delete_file(), destroy(), execute(), getClient(), getOrCreate(), hostPath(), list_files() (+6 more) +Cohesion: 0.27 +Nodes (16): OrunmilaSandbox, create(), delete_file(), destroy(), execute(), getClient(), getOrCreate(), hostPath() (+8 more) ### Community 236 - "Community 236" Cohesion: 0.5 @@ -1639,8 +1661,8 @@ Cohesion: 0.22 Nodes (8): 1. Prime owns the goal, lanes own the work, 2. Dispatch: `delegate()`, one per lane, one turn, 3. Delegate toolsets vary — verify each lane, 4. Trust nothing — verify everything, 5. Windows PowerShell survival, 6. Finish per lane, not per swarm, 7. Standing bans (this repo), SWARMS.md — subagent swarm playbook (OpenCode / Hermes) ### Community 474 - "Community 474" -Cohesion: 0.22 -Nodes (8): Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range. +Cohesion: 0.15 +Nodes (11): _count_memories(), _create_memory(), _get_memory(), Keys with Jaccard > 0.8 should merge., Keys with Jaccard > 0.8 should merge., Keys with low similarity should not merge., Keys with low similarity should not merge., Keys with low similarity should not merge. (+3 more) ### Community 475 - "Community 475" Cohesion: 0.15 @@ -1702,21 +1724,25 @@ Nodes (4): hammer_measured(), main(), Fire n requests with c concurrent workers, Cohesion: 0.22 Nodes (8): API Endpoints, code:env (ORUNMILA_ENABLED=TRUE), code:bash (python run.py), code:mermaid (graph TD), License, Orunmila, Usage, Workflow +### Community 491 - "Community 491" +Cohesion: 0.07 +Nodes (13): IntFlag, Covers line 28: GET /auth/health., Covers line 28: GET /auth/health., Covers lines 139, 141-149: googleLogin endpoint., Covers lines 139, 141-149: googleLogin endpoint., TestGoogleLogin, TestHealthEndpoint, Tests for main/utils/roles.py — covers requirePermission and edge cases. (+5 more) + ### Community 492 - "Community 492" Cohesion: 0.33 Nodes (5): Baseline (lane 4), Export recipe, Move triggers (any one fires the migration), Options, Vector Scale-Up Runbook ### Community 493 - "Community 493" -Cohesion: 0.2 -Nodes (9): Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval. (+1 more) +Cohesion: 0.18 +Nodes (10): Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB. (+2 more) ### Community 495 - "Community 495" Cohesion: 0.05 Nodes (42): 0. The blockers, ranked, 1.1 Process model — exactly one process, several threads, 1.1 Runtime topology — one process, many threads, 1.2 Cache (post-refactor) — RAM sharing works, 1.2 The cache is already the right shape for multi-process, 1.3 Per-process resources that multiply with N workers, 1.3 Per-process state that multiplies with N, 1. Verified current state (+34 more) ### Community 497 - "Community 497" -Cohesion: 0.19 -Nodes (5): buildSystemPrompt(), getClient(), persistEvent(), OrunmilaCompactor, newTokenCache() +Cohesion: 0.21 +Nodes (6): buildSystemPrompt(), getClient(), Orunmila, persistEvent(), OrunmilaCompactor, newTokenCache() ### Community 498 - "Community 498" Cohesion: 0.17 @@ -1735,8 +1761,8 @@ Cohesion: 0.22 Nodes (3): getCurrentSession(), getSessions(), sessionToDict() ### Community 502 - "Community 502" -Cohesion: 0.11 -Nodes (15): Tests for connection pool configuration, Tests for connection pool configuration, Stocks engine should have optimized pool settings, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Tests for lazy JSON deserialization, Query manager should have deserialize method, Query manager should have deserialize method (+7 more) +Cohesion: 0.07 +Nodes (22): Tests for connection pool configuration, Tests for connection pool configuration, Stocks engine should have optimized pool settings, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Tests for lazy JSON deserialization, Query manager should have deserialize method, Query manager should have deserialize method (+14 more) ### Community 503 - "Community 503" Cohesion: 0.17 @@ -1780,15 +1806,15 @@ Nodes (16): baseFrame(), deserializeJsonColumns(), envelope(), fetchLivePayload( ### Community 518 - "Community 518" Cohesion: 0.06 -Nodes (30): memoryMaintenance(), create_memories(), Zero access but score still above threshold → not archived., Even with low score, if accessed → not archived., Even with low score, if accessed → not archived., Already archived memories are skipped., Already archived memories are skipped., Decay happens first, then archive check with new scores. (+22 more) +Nodes (29): memoryMaintenance(), create_memories(), Zero access but score still above threshold → not archived., Even with low score, if accessed → not archived., Even with low score, if accessed → not archived., Already archived memories are skipped., Already archived memories are skipped., Decay happens first, then archive check with new scores. (+21 more) ### Community 519 - "Community 519" Cohesion: 0.57 Nodes (6): addRole(), addRoleToUser(), getCurrentUser(), getRolesList(), hasRole(), toDict() ### Community 520 - "Community 520" -Cohesion: 0.33 -Nodes (5): pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged. +Cohesion: 0.16 +Nodes (9): pd.NA is not a string, so lambda returns it unchanged., All four SPECIAL_COLS should parse correctly when mixed with None., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., All four SPECIAL_COLS should parse correctly when mixed with None., All four SPECIAL_COLS should parse correctly when mixed with None. (+1 more) ### Community 521 - "Community 521" Cohesion: 0.33 @@ -1819,8 +1845,8 @@ Cohesion: 0.18 Nodes (11): Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback., Store a memory about the user's preferences, analysis results, or feedback. (+3 more) ### Community 529 - "Community 529" -Cohesion: 0.12 -Nodes (14): Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false. (+6 more) +Cohesion: 0.29 +Nodes (6): GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422. ### Community 532 - "Community 532" Cohesion: 0.5 @@ -1835,12 +1861,12 @@ Cohesion: 0.5 Nodes (4): LATER (P2 — when touching these files), NOW (P0 — fix before next release), Priority Matrix, SOON (P1 — fix within 2 weeks) ### Community 535 - "Community 535" -Cohesion: 0.29 -Nodes (6): Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers line 16: empty password raises ValueError. +Cohesion: 0.21 +Nodes (7): ResultCache — SHA256-keyed file-based cache for computed results., File-based cache keyed by SHA256 of code. Stores results as JSON under:, Return cached result dict or None if miss., Store result with timestamp., Delete all cached results for a session., Check if a result exists for the given code., ResultCache ### Community 536 - "Community 536" -Cohesion: 0.22 -Nodes (6): initialize(), initialize(), memoryMaintenance(), OrunmilaService, getApp(), runAll() +Cohesion: 0.25 +Nodes (6): initialize(), initialize(), P5: register memory maintenance on the shared scheduler. Kept in this ser, registerMemoryMaintenanceJob(), getApp(), runAll() ### Community 538 - "Community 538" Cohesion: 0.14 @@ -1876,7 +1902,7 @@ Nodes (7): code:python (def test_split_cliff_no_fake_loss_on_adjusted_series(mon ### Community 546 - "Community 546" Cohesion: 0.16 -Nodes (14): execute_code(), Store a value in the harness state for this session. Use this to save inter, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Read a file from the workspace. Args: path: Path to the file (e., Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis, (+6 more) +Nodes (14): execute_code(), Store a value in the harness state for this session. Use this to save inter, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis,, Execute Python code in an isolated sandbox. Use for quantitative analysis, (+6 more) ### Community 547 - "Community 547" Cohesion: 0.33 @@ -1959,8 +1985,8 @@ Cohesion: 0.14 Nodes (11): Integration tests for the verifyAPIKey function., Test successful API key verification., Integration tests for the verifyAPIKey function., Test API key verification when quota is exceeded., Test API key verification with invalid key., Test API key verification with missing key., Test API key verification with invalid key., Test that API key system can be disabled. (+3 more) ### Community 568 - "Community 568" -Cohesion: 0.29 -Nodes (6): Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404. +Cohesion: 0.11 +Nodes (16): Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 17, 22-27: user found, role not present, role added. (+8 more) ### Community 569 - "Community 569" Cohesion: 0.33 @@ -1979,16 +2005,12 @@ Cohesion: 0.27 Nodes (4): Test that invalid API key returns zero rows affected., Test that multiple API keys have independent quotas., Test that invalid API key returns zero rows affected., Test that multiple API keys have independent quotas. ### Community 573 - "Community 573" -Cohesion: 0.29 -Nodes (7): Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the workspace. Args: path: Path to the file (e., read_file() +Cohesion: 0.25 +Nodes (8): Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the workspace. Args: path: Path to the file (e., Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the workspace. Args: path: Path to the file (e., read_file() ### Community 574 - "Community 574" -Cohesion: 0.22 -Nodes (7): Integration tests for all query optimizations, Integration tests for all query optimizations, All optimizations should be implemented, All optimizations should be implemented, Query filter should use ticker index, Query filter should use ticker index, TestQueryOptimization - -### Community 575 - "Community 575" -Cohesion: 0.12 -Nodes (7): TestAgentSandboxIntegration, makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., TestMakeChatIncludesMemoryTools +Cohesion: 0.14 +Nodes (9): Verify that getSession() returns per-thread Session instances., Calling getSession() twice in the same thread returns the same object., Two threads must NOT share a Session object., With 20 concurrent threads, every thread must get its own Session., The returned object must be a real requests.Session., TestGetSession, get_session(), Return a requests.Session for the current thread. Sessions are created la (+1 more) ### Community 577 - "Community 577" Cohesion: 0.33 @@ -1996,7 +2018,7 @@ Nodes (5): replaceNan handles direct float NaN values (line 34)., replaceNan han ### Community 578 - "Community 578" Cohesion: 0.33 -Nodes (6): Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., TestAddRoleToUser +Nodes (5): Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval. ### Community 579 - "Community 579" Cohesion: 0.33 @@ -2015,28 +2037,32 @@ Cohesion: 0.13 Nodes (14): 1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield), 1.2 Non-functional, 1. Requirements, 2. Domain model, 3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout), 4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase), 5. Risks / assumptions (honest flags carried over — do not treat as fact), 6.1 DB & migrations (`user_db`) — READY, 2 actions (+6 more) ### Community 584 - "Community 584" -Cohesion: 0.33 -Nodes (5): Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added. +Cohesion: 0.13 +Nodes (13): Covers lines 95-98: session deleted., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 96-97: session not found., Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}., Covers lines 95-98: session deleted., Covers lines 96-97: session not found., Covers lines 95-98: DELETE /prometheus/sessions/{sessionId}. (+5 more) ### Community 585 - "Community 585" Cohesion: 0.33 Nodes (5): Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Every function in TOOL_REGISTRY must have Gemini-safe signatures. Custom cl, Regression: HarnessState must never leak into tool signatures., Regression: HarnessState must never leak into tool signatures., TestGeminiCompatibility +### Community 586 - "Community 586" +Cohesion: 0.21 +Nodes (6): B3Scraper, initialize(), P5: register the scraper cron jobs on the shared scheduler. Kept in this, registerScraperJobs(), runScraper(), ScraperService + ### Community 587 - "Community 587" Cohesion: 0.4 Nodes (5): Category 8: Testing Gaps (MEDIUM), Issue 8.1 — No integration tests for full request lifecycle, Issue 8.2 — No tests for scraper, stocks query, or cache, Issue 8.3 — No tests for Google OAuth callback, Issue 8.4 — No tests for session cleanup ### Community 588 - "Community 588" -Cohesion: 0.33 -Nodes (5): Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers lines 42-44: session validation fails. +Cohesion: 0.2 +Nodes (8): Covers lines 57-60: admin bypasses permission check and generates key., Covers lines 57-60: admin bypasses permission check and generates key., Covers lines 57-60: admin bypasses permission check and generates key., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers lines 42-44: session validation fails. ### Community 589 - "Community 589" Cohesion: 0.33 Nodes (6): dispatchToolCall must route memory tool names via TOOL_REGISTRY., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., TestDispatchRoutesMemoryTools ### Community 590 - "Community 590" -Cohesion: 0.4 -Nodes (5): initialize(), P5: register the scraper cron jobs on the shared scheduler. Kept in this, registerScraperJobs(), runScraper(), ScraperService +Cohesion: 0.29 +Nodes (5): buildClient(), connect(), ensureFastmcp(), MCPClientPool, _parseServers() ### Community 591 - "Community 591" Cohesion: 0.4 @@ -2055,8 +2081,12 @@ Cohesion: 0.5 Nodes (4): 1.4 Phase P1 — cache locations, TTL table, directives, code:nginx (proxy_pass http://stocks_api;), code:nginx (server {), code:bash (K=sk_test_...; U='http://localhost/stocks/historical?search=) ### Community 595 - "Community 595" -Cohesion: 0.33 -Nodes (4): Integration tests for all query optimizations, All optimizations should be implemented, Query filter should use ticker index, TestQueryOptimization +Cohesion: 0.19 +Nodes (7): Tests for thread safety utilities (Issues 5 & 6). Issue 5: DiscordHandler use, Verify getSession returns thread-local sessions under concurrency., getSession() must give each thread its own Session., connectivity.checkServiceConnection must call getSession(), not use a global Ses, connectivity.checkServiceConnection must call getSession(), not use a global Ses, TestConcurrentGetSession, TestConcurrentHttpProxy + +### Community 596 - "Community 596" +Cohesion: 0.2 +Nodes (9): ResponseCache, autoAbbreviate(), dedupAbbrev(), detectNestedFields(), generateAbbreviations(), _parse_date(), parseDate(), parseDateEnd() (+1 more) ### Community 597 - "Community 597" Cohesion: 0.5 @@ -2067,30 +2097,70 @@ Cohesion: 0.5 Nodes (4): 1.4 Phase P1 — cache locations, TTL table, directives, code:nginx (proxy_pass http://stocks_api;), code:nginx (server {), code:bash (K=sk_test_...; U='http://localhost/stocks/historical?search=) ### Community 599 - "Community 599" -Cohesion: 0.5 -Nodes (4): code:python (from dataclasses import dataclass), code:bash (git add main/app/wallet/__init__.py main/app/wallet/math.py ), code:python (from datetime import date), Task 3: Pure derivation math +Cohesion: 0.38 +Nodes (9): Tests for main/utils/logging_config.py — covers DiscordHandler branches., test_discord_disabled(), test_discord_no_webhook(), test_exception_in_submit(), test_level_below_error(), test_message_truncation(), test_submit_called_on_error(), test_with_exception_info() (+1 more) + +### Community 602 - "Community 602" +Cohesion: 0.24 +Nodes (5): lifespan(), status(), checkDatabaseConnection(), checkSingleDb(), runMigrations() ### Community 603 - "Community 603" Cohesion: 0.4 Nodes (5): Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, Tests covering key.py lines 15-40. Uses asyncio.run() since pytest-asyncio, TestVerifyAPIKey ### Community 605 - "Community 605" -Cohesion: 0.38 -Nodes (6): create_memory(), createMemory(), _downloadModel(), embed(), getEmbeddingModel(), executeMemoryTool() +Cohesion: 0.4 +Nodes (4): _downloadModel(), getEmbeddingModel(), initialize(), OrunmilaService + +### Community 606 - "Community 606" +Cohesion: 0.22 +Nodes (4): Authentication System, Google OAuth, JWT Authentication, TestSessionExpiryConfig + +### Community 607 - "Community 607" +Cohesion: 0.39 +Nodes (8): _build_error_response(), buildErrorResponse(), generic_exception_handler(), genericExceptionHandler(), http_exception_handler(), httpExceptionHandler(), validation_exception_handler(), validationExceptionHandler() + +### Community 609 - "Community 609" +Cohesion: 0.33 +Nodes (5): Covers lines 57-60: admin bypasses permission check and generates key., Covers lines 61-63: exception during key generation (admin path)., Covers lines 61-63: exception during key generation (admin path)., Covers lines 61-63: exception during key generation (admin path)., Covers lines 61-63: exception during key generation (admin path). + +### Community 610 - "Community 610" +Cohesion: 0.33 +Nodes (5): Covers line 24: GET /prometheus/health., Covers line 24: GET /prometheus/health., Covers line 24: GET /prometheus/health., Covers line 24: GET /prometheus/health., TestPrometheusHealth + +### Community 612 - "Community 612" +Cohesion: 0.47 +Nodes (3): TestCleanup, cleanup(), Close the main thread's session at interpreter shutdown. + +### Community 613 - "Community 613" +Cohesion: 0.33 +Nodes (6): makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., TestMakeChatIncludesMemoryTools + +### Community 615 - "Community 615" +Cohesion: 0.5 +Nodes (4): code:python ("""add wallet_holdings and wallet_lots tables), code:python (import main.models.wallet), code:bash (git add migrations/versions/wallet_tables_20260904_add_walle), Task 2: Alembic migration for wallet tables + +### Community 617 - "Community 617" +Cohesion: 0.67 +Nodes (3): checkServiceConnection — success, not found, errors., checkServiceConnection — success, not found, errors., TestCheckServiceConnection + +### Community 618 - "Community 618" +Cohesion: 0.67 +Nodes (3): checkMySqlConnection — success, errors, engine=None paths., checkMySqlConnection — success, errors, engine=None paths., TestCheckMySqlConnection ## Knowledge Gaps -- **3349 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+3344 more) +- **3350 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+3345 more) These have ≤1 connection - possible missing edges or undocumented components. -- **228 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **233 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `Pytest Testing` connect `Community 138` to `Authentication Core`, `Frontend Components`, `Community 129`, `Data Models & Types`, `Community 518`, `Community 135`, `Community 140`, `Community 527`, `Community 16`, `Community 18`, `Community 147`, `Community 24`, `Community 25`, `Community 27`, `Community 29`, `Community 32`, `Community 33`, `Community 40`, `Community 43`, `Community 44`, `Community 45`, `Community 49`, `Community 51`, `Community 59`, `Community 61`, `Community 67`, `Community 84`, `Community 120`, `Community 93`, `Community 477`, `Community 482`, `Community 100`, `Community 101`, `Community 102`, `Community 104`, `Community 500`, `Community 502`, `Community 504`, `Community 122`, `Community 251`?** - _High betweenness centrality (0.096) - this node is a cross-community bridge._ -- **Why does `FastAPI` connect `Community 482` to `Community 129`, `Community 517`, `Community 519`, `Community 523`, `Community 18`, `Community 147`, `Community 536`, `Community 157`, `Community 33`, `Community 34`, `Community 40`, `Community 43`, `Community 45`, `Community 54`, `Community 58`, `Community 59`, `Community 576`, `Community 68`, `Community 71`, `Community 84`, `Community 120`, `Community 477`, `Community 500`, `Community 501`, `Community 504`?** - _High betweenness centrality (0.044) - this node is a cross-community bridge._ -- **Why does `UserManager` connect `Community 45` to `Community 256`, `Prometheus Agent`, `Community 519`, `Prometheus Memory`, `Community 524`, `Community 141`, `User Roles & Permissions`, `Community 148`, `Community 22`, `Community 28`, `Community 541`, `Community 37`, `Community 172`, `Community 47`, `Community 565`, `Community 58`, `Community 61`, `Community 578`, `Community 67`, `Community 603`, `Community 221`, `Community 99`, `Community 105`, `Community 107`, `Community 493`, `Community 112`, `Community 114`, `Community 120`, `Community 511`?** +- **Why does `Pytest Testing` connect `Community 93` to `Authentication Core`, `Frontend Components`, `Community 129`, `Data Models & Types`, `Community 518`, `Community 135`, `Community 138`, `Community 140`, `Community 527`, `Community 16`, `Community 18`, `Community 147`, `Community 24`, `Community 25`, `Community 27`, `Community 29`, `Community 32`, `Community 33`, `Community 40`, `Community 44`, `Community 49`, `Community 51`, `Community 59`, `Community 188`, `Community 61`, `Community 67`, `Community 595`, `Community 599`, `Community 600`, `Community 120`, `Community 477`, `Community 606`, `Community 482`, `Community 611`, `Community 100`, `Community 101`, `Community 102`, `Community 104`, `Community 491`, `Community 500`, `Community 502`, `Community 504`, `Community 251`?** + _High betweenness centrality (0.078) - this node is a cross-community bridge._ +- **Why does `FastAPI` connect `Community 482` to `Community 129`, `Community 517`, `Community 519`, `Community 523`, `Community 18`, `Community 147`, `Community 536`, `Community 33`, `Community 34`, `Community 40`, `Community 58`, `Community 576`, `Community 68`, `Community 71`, `Community 596`, `Community 84`, `Community 600`, `Community 602`, `Community 120`, `Community 477`, `Community 222`, `Community 606`, `Community 607`, `Community 491`, `Community 500`, `Community 501`, `Community 504`?** + _High betweenness centrality (0.036) - this node is a cross-community bridge._ +- **Why does `UserManager` connect `Community 45` to `Community 256`, `Prometheus Agent`, `Community 519`, `Community 136`, `Prometheus Memory`, `Community 140`, `Community 524`, `User Roles & Permissions`, `Community 141`, `Community 148`, `Community 22`, `Community 28`, `Community 541`, `Community 37`, `Community 172`, `Community 47`, `Community 565`, `Community 568`, `Community 58`, `Community 61`, `Community 67`, `Community 584`, `Community 603`, `Community 221`, `Community 610`, `Community 99`, `Community 105`, `Community 491`, `Community 107`, `Community 493`, `Community 112`, `Community 114`, `Community 120`, `Community 511`?** _High betweenness centrality (0.031) - this node is a cross-community bridge._ - **Are the 72 inferred relationships involving `StocksCacheManager` (e.g. with `TestStocksCacheManager` and `TestVerifyAPIKey`) actually correct?** _`StocksCacheManager` has 72 INFERRED edges - model-reasoned connections that need verification._ diff --git a/graphify-out/graph.json b/graphify-out/graph.json index 67036416..1894da6d 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -237,7 +237,7 @@ "source_file": "config.py", "source_location": "L90", "id": "server_config_config", - "community": 45, + "community": 140, "norm_label": "config" }, { @@ -264,7 +264,7 @@ "source_file": "run.py", "source_location": "L1", "id": "run_py", - "community": 59, + "community": 602, "norm_label": "run.py" }, { @@ -273,7 +273,7 @@ "source_file": "run.py", "source_location": "L28", "id": "server_run_lifespan", - "community": 59, + "community": 602, "norm_label": "lifespan()" }, { @@ -282,7 +282,7 @@ "source_file": "run.py", "source_location": "L73", "id": "server_run_health", - "community": 59, + "community": 602, "norm_label": "health()" }, { @@ -291,7 +291,7 @@ "source_file": "run.py", "source_location": "L78", "id": "server_run_status", - "community": 59, + "community": 602, "norm_label": "status()" }, { @@ -300,7 +300,7 @@ "source_file": "run.py", "source_location": "L112", "id": "server_run_triggerscraper", - "community": 59, + "community": 602, "norm_label": "triggerscraper()" }, { @@ -2226,7 +2226,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L65", "id": "authentication_authentication_authenticateuser", - "community": 576, + "community": 43, "norm_label": "authenticateuser()" }, { @@ -2397,7 +2397,7 @@ "source_file": "main/app/authentication/util.py", "source_location": "L1", "id": "main_app_authentication_util_py", - "community": 43, + "community": 606, "norm_label": "util.py" }, { @@ -2424,7 +2424,7 @@ "source_file": "main/app/authentication/util.py", "source_location": "L31", "id": "authentication_util_createaccesstoken", - "community": 43, + "community": 58, "norm_label": "createaccesstoken()" }, { @@ -2487,7 +2487,7 @@ "source_file": "main/app/orunmila/agent.py", "source_location": "L208", "id": "orunmila_agent_orunmila", - "community": 45, + "community": 497, "norm_label": "orunmila" }, { @@ -2541,7 +2541,7 @@ "source_file": "main/app/orunmila/chat.py", "source_location": "L13", "id": "orunmila_chat_orunmilachatmanager", - "community": 45, + "community": 231, "norm_label": "orunmilachatmanager" }, { @@ -2937,7 +2937,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L64", "id": "orunmila_memory_memorycandidate", - "community": 45, + "community": 140, "norm_label": "memorycandidate" }, { @@ -2946,7 +2946,7 @@ "source_file": "", "source_location": "", "id": "basemodel", - "community": 45, + "community": 140, "norm_label": "basemodel" }, { @@ -3036,7 +3036,7 @@ "source_file": "main/app/orunmila/memory.py", "source_location": "L194", "id": "orunmila_memory_orunmilamemory", - "community": 45, + "community": 140, "norm_label": "orunmilamemory" }, { @@ -3171,7 +3171,7 @@ "source_file": "main/app/orunmila/sandbox.py", "source_location": "L51", "id": "orunmila_sandbox_sandboxmanager", - "community": 45, + "community": 234, "norm_label": "sandboxmanager" }, { @@ -4242,7 +4242,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L1", "id": "main_app_stocks_api_util_py", - "community": 54, + "community": 596, "norm_label": "util.py" }, { @@ -4251,7 +4251,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L17", "id": "stocks_api_util_dedupabbrev", - "community": 54, + "community": 596, "norm_label": "dedupabbrev()" }, { @@ -4260,7 +4260,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L26", "id": "stocks_api_util_autoabbreviate", - "community": 54, + "community": 596, "norm_label": "autoabbreviate()" }, { @@ -4269,7 +4269,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L47", "id": "stocks_api_util_generateabbreviations", - "community": 54, + "community": 596, "norm_label": "generateabbreviations()" }, { @@ -4287,7 +4287,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L73", "id": "stocks_api_util_parsedate", - "community": 54, + "community": 596, "norm_label": "parsedate()" }, { @@ -4305,7 +4305,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L96", "id": "stocks_api_util_detectnestedfields", - "community": 54, + "community": 596, "norm_label": "detectnestedfields()" }, { @@ -4557,7 +4557,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L1", "id": "main_controller_stocksapi_controller_py", - "community": 157, + "community": 222, "norm_label": "stocksapi_controller.py" }, { @@ -4566,7 +4566,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L28", "id": "controller_stocksapi_controller_health", - "community": 157, + "community": 222, "norm_label": "health()" }, { @@ -4764,7 +4764,7 @@ "source_file": "main/models/memory.py", "source_location": "L8", "id": "models_memory_orunmilamemory", - "community": 45, + "community": 140, "norm_label": "orunmilamemory" }, { @@ -4809,7 +4809,7 @@ "source_file": "main/models/sandbox.py", "source_location": "L5", "id": "models_sandbox_orunmilasandbox", - "community": 140, + "community": 234, "norm_label": "orunmilasandbox" }, { @@ -4935,7 +4935,7 @@ "source_file": "main/service/authentication_service.py", "source_location": "L5", "id": "service_authentication_service_authenticationservice", - "community": 45, + "community": 140, "norm_label": "authenticationservice" }, { @@ -4953,7 +4953,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L1", "id": "main_service_orunmila_service_py", - "community": 536, + "community": 605, "norm_label": "orunmila_service.py" }, { @@ -4962,7 +4962,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L23", "id": "service_orunmila_service_memorymaintenance", - "community": 536, + "community": 137, "norm_label": "memorymaintenance()" }, { @@ -4971,7 +4971,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L65", "id": "service_orunmila_service_orunmilaservice", - "community": 536, + "community": 605, "norm_label": "orunmilaservice" }, { @@ -4980,7 +4980,7 @@ "source_file": "main/service/orunmila_service.py", "source_location": "L67", "id": "service_orunmila_service_initialize", - "community": 536, + "community": 605, "norm_label": "initialize()" }, { @@ -4989,7 +4989,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L1", "id": "main_service_scraper_service_py", - "community": 590, + "community": 586, "norm_label": "scraper_service.py" }, { @@ -4998,7 +4998,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L13", "id": "service_scraper_service_runscraper", - "community": 590, + "community": 586, "norm_label": "runscraper()" }, { @@ -5007,7 +5007,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L23", "id": "service_scraper_service_registerscraperjobs", - "community": 590, + "community": 586, "norm_label": "registerscraperjobs()" }, { @@ -5016,7 +5016,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L49", "id": "service_scraper_service_scraperservice", - "community": 590, + "community": 586, "norm_label": "scraperservice" }, { @@ -5025,7 +5025,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L51", "id": "service_scraper_service_initialize", - "community": 590, + "community": 586, "norm_label": "initialize()" }, { @@ -5124,7 +5124,7 @@ "source_file": "main/utils/connectivity.py", "source_location": "L1", "id": "main_utils_connectivity_py", - "community": 59, + "community": 602, "norm_label": "connectivity.py" }, { @@ -5133,7 +5133,7 @@ "source_file": "main/utils/connectivity.py", "source_location": "L11", "id": "utils_connectivity_checkdatabaseconnection", - "community": 59, + "community": 602, "norm_label": "checkdatabaseconnection()" }, { @@ -5151,7 +5151,7 @@ "source_file": "main/utils/errors.py", "source_location": "L1", "id": "main_utils_errors_py", - "community": 33, + "community": 607, "norm_label": "errors.py" }, { @@ -5187,7 +5187,7 @@ "source_file": "main/utils/errors.py", "source_location": "L26", "id": "utils_errors_builderrorresponse", - "community": 33, + "community": 607, "norm_label": "builderrorresponse()" }, { @@ -5196,7 +5196,7 @@ "source_file": "main/utils/errors.py", "source_location": "L36", "id": "utils_errors_httpexceptionhandler", - "community": 33, + "community": 607, "norm_label": "httpexceptionhandler()" }, { @@ -5205,7 +5205,7 @@ "source_file": "main/utils/errors.py", "source_location": "L43", "id": "utils_errors_validationexceptionhandler", - "community": 33, + "community": 607, "norm_label": "validationexceptionhandler()" }, { @@ -5214,7 +5214,7 @@ "source_file": "main/utils/errors.py", "source_location": "L55", "id": "utils_errors_genericexceptionhandler", - "community": 33, + "community": 607, "norm_label": "genericexceptionhandler()" }, { @@ -5232,7 +5232,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L1", "id": "main_utils_http_session_py", - "community": 122, + "community": 574, "norm_label": "http_session.py" }, { @@ -5241,7 +5241,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L8", "id": "utils_http_session_getsession", - "community": 122, + "community": 574, "norm_label": "getsession()" }, { @@ -5304,7 +5304,7 @@ "source_file": "main/utils/migrator.py", "source_location": "L1", "id": "main_utils_migrator_py", - "community": 59, + "community": 602, "norm_label": "migrator.py" }, { @@ -5313,7 +5313,7 @@ "source_file": "main/utils/migrator.py", "source_location": "L8", "id": "utils_migrator_runmigrations", - "community": 59, + "community": 602, "norm_label": "runmigrations()" }, { @@ -5367,7 +5367,7 @@ "source_file": "main/utils/roles.py", "source_location": "L5", "id": "utils_roles_permission", - "community": 45, + "community": 140, "norm_label": "permission" }, { @@ -5376,7 +5376,7 @@ "source_file": "", "source_location": "", "id": "intflag", - "community": 45, + "community": 491, "norm_label": "intflag" }, { @@ -5394,7 +5394,7 @@ "source_file": "main/utils/roles.py", "source_location": "L17", "id": "utils_roles_roles", - "community": 45, + "community": 491, "norm_label": "roles" }, { @@ -6171,20 +6171,11 @@ "community": 187, "norm_label": "todo.md" }, - { - "label": "Priorities (active order, 2026-09-29)", - "file_type": "document", - "source_file": "TODO.md", - "source_location": "L1", - "id": "server_todo_priorities_active_order_2026_09_29", - "community": 187, - "norm_label": "priorities (active order, 2026-09-29)" - }, { "label": "User structure defined by string roles:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L49", + "source_location": "L39", "id": "server_todo_user_structure_defined_by_string_roles", "community": 187, "norm_label": "user structure defined by string roles:" @@ -6193,7 +6184,7 @@ "label": "USER:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L58", + "source_location": "L48", "id": "server_todo_user", "community": 187, "norm_label": "user:" @@ -6202,7 +6193,7 @@ "label": "PREMIUM:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L61", + "source_location": "L51", "id": "server_todo_premium", "community": 187, "norm_label": "premium:" @@ -6211,7 +6202,7 @@ "label": "DEVELOPER:", "file_type": "document", "source_file": "TODO.md", - "source_location": "L64", + "source_location": "L54", "id": "server_todo_developer", "community": 187, "norm_label": "developer:" @@ -7971,6 +7962,24 @@ "community": 495, "norm_label": "8. evidence index" }, + { + "label": "stocks-cache-ttl.md", + "file_type": "document", + "source_file": "docs/superpowers/benchmarks/stocks-cache-ttl.md", + "source_location": "L1", + "id": "docs_superpowers_benchmarks_stocks_cache_ttl_md", + "community": 619, + "norm_label": "stocks-cache-ttl.md" + }, + { + "label": "Stocks endpoint cache TTL \u2014 6h RSS check", + "file_type": "document", + "source_file": "docs/superpowers/benchmarks/stocks-cache-ttl.md", + "source_location": "L1", + "id": "benchmarks_stocks_cache_ttl_stocks_endpoint_cache_ttl_6h_rss_check", + "community": 619, + "norm_label": "stocks endpoint cache ttl \u2014 6h rss check" + }, { "label": "2026-08-09-sse-resume.md", "file_type": "document", @@ -9687,7 +9696,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L166", "id": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", - "community": 132, + "community": 615, "norm_label": "task 2: alembic migration for wallet tables" }, { @@ -9696,7 +9705,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L189", "id": "plans_2026_09_04_wallet_management_codeblock_6", - "community": 132, + "community": 615, "norm_label": "code:python (\"\"\"add wallet_holdings and wallet_lots tables)" }, { @@ -9705,7 +9714,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L248", "id": "plans_2026_09_04_wallet_management_codeblock_7", - "community": 132, + "community": 615, "norm_label": "code:python (import main.models.wallet)" }, { @@ -9714,7 +9723,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L262", "id": "plans_2026_09_04_wallet_management_codeblock_8", - "community": 132, + "community": 615, "norm_label": "code:bash (git add migrations/versions/wallet_tables_20260904_add_walle)" }, { @@ -9723,7 +9732,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L269", "id": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", - "community": 599, + "community": 132, "norm_label": "task 3: pure derivation math" }, { @@ -9732,7 +9741,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L281", "id": "plans_2026_09_04_wallet_management_codeblock_9", - "community": 599, + "community": 132, "norm_label": "code:python (from datetime import date)" }, { @@ -9741,7 +9750,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L325", "id": "plans_2026_09_04_wallet_management_codeblock_10", - "community": 599, + "community": 132, "norm_label": "code:python (from dataclasses import dataclass)" }, { @@ -9750,7 +9759,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L384", "id": "plans_2026_09_04_wallet_management_codeblock_11", - "community": 599, + "community": 132, "norm_label": "code:bash (git add main/app/wallet/__init__.py main/app/wallet/math.py )" }, { @@ -11931,6 +11940,15 @@ "community": 208, "norm_label": "10. plans and follow-ups" }, + { + "label": "Priorities (active order, 2026-09-29)", + "file_type": "document", + "source_file": "TODO.md", + "source_location": "L1", + "community": 187, + "norm_label": "priorities (active order, 2026-09-29)", + "id": "server_todo_priorities_active_order_2026_09_29" + }, { "label": "Discover available field names before querying /historical or /fundamental.", "file_type": "rationale", @@ -13637,7 +13655,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L1", - "community": 84, + "community": 590, "norm_label": "mcp.py", "id": "main_app_prometheus_mcp_py" }, @@ -13646,7 +13664,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L21", - "community": 84, + "community": 590, "norm_label": "buildclient()", "id": "prometheus_mcp_buildclient" }, @@ -13655,7 +13673,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L29", - "community": 84, + "community": 590, "norm_label": "connect()", "id": "prometheus_mcp_connect" }, @@ -13664,7 +13682,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L36", - "community": 84, + "community": 590, "norm_label": "mcpclientpool", "id": "prometheus_mcp_mcpclientpool" }, @@ -13673,7 +13691,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L37", - "community": 84, + "community": 590, "norm_label": ".__init__()", "id": "prometheus_mcp_mcpclientpool_init" }, @@ -13682,7 +13700,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L42", - "community": 84, + "community": 590, "norm_label": ".initialize()", "id": "prometheus_mcp_mcpclientpool_initialize" }, @@ -13691,7 +13709,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L56", - "community": 84, + "community": 590, "norm_label": ".getclients()", "id": "prometheus_mcp_mcpclientpool_getclients" }, @@ -13700,7 +13718,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L63", - "community": 84, + "community": 590, "norm_label": ".healthcheck()", "id": "prometheus_mcp_mcpclientpool_healthcheck" }, @@ -13709,7 +13727,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L75", - "community": 84, + "community": 590, "norm_label": ".reconnect()", "id": "prometheus_mcp_mcpclientpool_reconnect" }, @@ -13718,7 +13736,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L90", - "community": 84, + "community": 590, "norm_label": ".close()", "id": "prometheus_mcp_mcpclientpool_close" }, @@ -13763,7 +13781,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L64", - "community": 45, + "community": 140, "norm_label": "memorycandidate", "id": "prometheus_memory_memorycandidate" }, @@ -14582,7 +14600,7 @@ "file_type": "code", "source_file": "main/service/prometheus_service.py", "source_location": "L1", - "community": 72, + "community": 536, "norm_label": "prometheus_service.py", "id": "main_service_prometheus_service_py" }, @@ -14609,7 +14627,7 @@ "file_type": "code", "source_file": "main/service/prometheus_service.py", "source_location": "L67", - "community": 72, + "community": 536, "norm_label": "initialize()", "id": "service_prometheus_service_initialize" }, @@ -15356,7 +15374,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L10", - "community": 84, + "community": 590, "norm_label": "ensurefastmcp()", "id": "prometheus_mcp_ensurefastmcp" }, @@ -15446,7 +15464,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L112", - "community": 546, + "community": 573, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_112" }, @@ -15581,7 +15599,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L23", - "community": 157, + "community": 222, "norm_label": "jsonbytesresponse", "id": "controller_stocksapi_controller_jsonbytesresponse" }, @@ -15590,7 +15608,7 @@ "file_type": "code", "source_file": "", "source_location": "", - "community": 157, + "community": 222, "norm_label": "fastapiresponse", "id": "fastapiresponse" }, @@ -15599,7 +15617,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L26", - "community": 157, + "community": 222, "norm_label": ".render()", "id": "controller_stocksapi_controller_jsonbytesresponse_render" }, @@ -16391,7 +16409,7 @@ "file_type": "rationale", "source_file": "main/service/scraper_service.py", "source_location": "L23", - "community": 590, + "community": 586, "norm_label": "p5: register the scraper cron jobs on the shared scheduler. kept in this", "id": "service_scraper_service_rationale_23" }, @@ -17543,7 +17561,7 @@ "file_type": "code", "source_file": "main/service/prometheus_service.py", "source_location": "L60", - "community": 72, + "community": 536, "norm_label": "registermemorymaintenancejob()", "id": "service_prometheus_service_registermemorymaintenancejob" }, @@ -17552,7 +17570,7 @@ "file_type": "rationale", "source_file": "main/service/prometheus_service.py", "source_location": "L61", - "community": 72, + "community": 536, "norm_label": "p5: register memory maintenance on the shared scheduler. kept in this ser", "id": "service_prometheus_service_rationale_61" }, @@ -17714,7 +17732,7 @@ "file_type": "code", "source_file": "main/app/prometheus/compact.py", "source_location": "L89", - "community": 80, + "community": 608, "norm_label": "fieldregistry", "id": "prometheus_compact_fieldregistry" }, @@ -17723,7 +17741,7 @@ "file_type": "code", "source_file": "main/app/prometheus/compact.py", "source_location": "L94", - "community": 80, + "community": 608, "norm_label": ".buildurl()", "id": "prometheus_compact_fieldregistry_buildurl" }, @@ -17732,7 +17750,7 @@ "file_type": "code", "source_file": "main/app/prometheus/compact.py", "source_location": "L99", - "community": 80, + "community": 608, "norm_label": ".fetchfields()", "id": "prometheus_compact_fieldregistry_fetchfields" }, @@ -17741,7 +17759,7 @@ "file_type": "code", "source_file": "main/app/prometheus/compact.py", "source_location": "L120", - "community": 80, + "community": 608, "norm_label": ".getfields()", "id": "prometheus_compact_fieldregistry_getfields" }, @@ -17750,7 +17768,7 @@ "file_type": "code", "source_file": "main/app/prometheus/compact.py", "source_location": "L127", - "community": 80, + "community": 608, "norm_label": ".buildmetricregex()", "id": "prometheus_compact_fieldregistry_buildmetricregex" }, @@ -17759,7 +17777,7 @@ "file_type": "code", "source_file": "main/app/prometheus/compact.py", "source_location": "L134", - "community": 80, + "community": 608, "norm_label": ".getmetricregex()", "id": "prometheus_compact_fieldregistry_getmetricregex" }, @@ -17912,7 +17930,7 @@ "file_type": "code", "source_file": "main/utils/service_manager.py", "source_location": "L15", - "community": 45, + "community": 140, "norm_label": "servicemanager", "id": "utils_service_manager_servicemanager" }, @@ -18272,7 +18290,7 @@ "file_type": "code", "source_file": "main/app/prometheus/compact.py", "source_location": "L139", - "community": 80, + "community": 608, "norm_label": ".invalidate()", "id": "prometheus_compact_fieldregistry_invalidate" }, @@ -18281,7 +18299,7 @@ "file_type": "code", "source_file": "main/app/prometheus/compact.py", "source_location": "L145", - "community": 80, + "community": 608, "norm_label": ".warmup()", "id": "prometheus_compact_fieldregistry_warmup" }, @@ -18362,7 +18380,7 @@ "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L24", - "community": 157, + "community": 222, "norm_label": "sends pre-serialized json bytes without re-encoding (cache-friendly).", "id": "controller_stocksapi_controller_rationale_24" }, @@ -18461,7 +18479,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L51", - "community": 54, + "community": 596, "norm_label": ".set()", "id": "stocks_api_response_cache_responsecache_set" }, @@ -18506,7 +18524,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L323", - "community": 157, + "community": 222, "norm_label": "generatekey()", "id": "controller_stocksapi_controller_generatekey" }, @@ -19244,7 +19262,7 @@ "file_type": "code", "source_file": "main/app/prometheus/compact.py", "source_location": "L94", - "community": 80, + "community": 608, "norm_label": ".__new__()", "id": "prometheus_compact_fieldregistry_new" }, @@ -19253,7 +19271,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L38", - "community": 84, + "community": 590, "norm_label": ".__new__()", "id": "prometheus_mcp_mcpclientpool_new" }, @@ -19334,7 +19352,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L46", - "community": 82, + "community": 54, "norm_label": "rebuildabbrevs()", "id": "stocks_api_compressor_rebuildabbrevs" }, @@ -20279,7 +20297,7 @@ "file_type": "code", "source_file": "main/app/prometheus/state.py", "source_location": "L14", - "community": 54, + "community": 63, "norm_label": ".set()", "id": "prometheus_state_harnessstate_set" }, @@ -20387,7 +20405,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L16", - "community": 84, + "community": 590, "norm_label": "_parseservers()", "id": "prometheus_mcp_parseservers" }, @@ -20558,7 +20576,7 @@ "file_type": "code", "source_file": "main/utils/connectivity.py", "source_location": "L13", - "community": 59, + "community": 602, "norm_label": "checksingledb()", "id": "utils_connectivity_checksingledb" }, @@ -22484,7 +22502,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/util.py", "source_location": "L27", - "community": 73, + "community": 596, "norm_label": "_parse_date()", "id": "stocks_api_util_parse_date" }, @@ -22700,7 +22718,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/util.py", "source_location": "L39", - "community": 73, + "community": 596, "norm_label": "parsedatestart()", "id": "stocks_api_util_parsedatestart" }, @@ -22709,7 +22727,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/util.py", "source_location": "L43", - "community": 73, + "community": 596, "norm_label": "parsedateend()", "id": "stocks_api_util_parsedateend" }, @@ -28685,7 +28703,7 @@ "file_type": "code", "source_file": "tests/test_auth_util.py", "source_location": "L1", - "community": 43, + "community": 606, "norm_label": "test_auth_util.py", "id": "tests_test_auth_util_py" }, @@ -28784,7 +28802,7 @@ "file_type": "code", "source_file": "tests/test_auth_util.py", "source_location": "L69", - "community": 43, + "community": 606, "norm_label": "testsessionexpiryconfig", "id": "tests_test_auth_util_testsessionexpiryconfig" }, @@ -28793,7 +28811,7 @@ "file_type": "code", "source_file": "tests/test_auth_util.py", "source_location": "L70", - "community": 43, + "community": 606, "norm_label": ".test_session_expiry_days_is_30()", "id": "tests_test_auth_util_testsessionexpiryconfig_test_session_expiry_days_is_30" }, @@ -28802,7 +28820,7 @@ "file_type": "code", "source_file": "tests/test_auth_util.py", "source_location": "L73", - "community": 43, + "community": 606, "norm_label": ".test_session_expiry_hours_calculation()", "id": "tests_test_auth_util_testsessionexpiryconfig_test_session_expiry_hours_calculation" }, @@ -28811,7 +28829,7 @@ "file_type": "code", "source_file": "tests/test_auth_util.py", "source_location": "L78", - "community": 43, + "community": 606, "norm_label": ".test_default_token_expiry_equals_30_days()", "id": "tests_test_auth_util_testsessionexpiryconfig_test_default_token_expiry_equals_30_days" }, @@ -28937,7 +28955,7 @@ "file_type": "code", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L8", - "community": 59, + "community": 618, "norm_label": "testcheckmysqlconnection", "id": "tests_test_connectivity_coverage_testcheckmysqlconnection" }, @@ -29027,7 +29045,7 @@ "file_type": "code", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L114", - "community": 59, + "community": 617, "norm_label": "testcheckserviceconnection", "id": "tests_test_connectivity_coverage_testcheckserviceconnection" }, @@ -29117,7 +29135,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L9", - "community": 59, + "community": 618, "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", "id": "tests_test_connectivity_coverage_rationale_9" }, @@ -29126,7 +29144,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L115", - "community": 59, + "community": 617, "norm_label": "checkserviceconnection \u2014 success, not found, errors.", "id": "tests_test_connectivity_coverage_rationale_115" }, @@ -29162,7 +29180,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L57", - "community": 99, + "community": 120, "norm_label": "_make_prometheus_client()", "id": "tests_test_controllers_coverage_make_prometheus_client" }, @@ -29216,7 +29234,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L130", - "community": 45, + "community": 491, "norm_label": "testhealthendpoint", "id": "tests_test_controllers_coverage_testhealthendpoint" }, @@ -29225,7 +29243,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L133", - "community": 45, + "community": 491, "norm_label": ".test_health_returns_ok()", "id": "tests_test_controllers_coverage_testhealthendpoint_test_health_returns_ok" }, @@ -29234,7 +29252,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L146", - "community": 45, + "community": 120, "norm_label": "testregisterendpoint", "id": "tests_test_controllers_coverage_testregisterendpoint" }, @@ -29279,7 +29297,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L215", - "community": 45, + "community": 120, "norm_label": "testloginendpoint", "id": "tests_test_controllers_coverage_testloginendpoint" }, @@ -29306,7 +29324,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L257", - "community": 45, + "community": 120, "norm_label": "testlogoutendpoint", "id": "tests_test_controllers_coverage_testlogoutendpoint" }, @@ -29369,7 +29387,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L344", - "community": 45, + "community": 491, "norm_label": "testgooglelogin", "id": "tests_test_controllers_coverage_testgooglelogin" }, @@ -29396,7 +29414,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L390", - "community": 45, + "community": 120, "norm_label": "testgooglecallback", "id": "tests_test_controllers_coverage_testgooglecallback" }, @@ -29603,7 +29621,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L727", - "community": 120, + "community": 136, "norm_label": "testrevokesession", "id": "tests_test_controllers_coverage_testrevokesession" }, @@ -29612,7 +29630,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L730", - "community": 120, + "community": 136, "norm_label": ".test_revoke_session_success()", "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_success" }, @@ -29621,7 +29639,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L757", - "community": 120, + "community": 136, "norm_label": ".test_revoke_session_not_found()", "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_not_found" }, @@ -29630,7 +29648,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L779", - "community": 120, + "community": 136, "norm_label": ".test_revoke_session_failure()", "id": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_failure" }, @@ -29657,7 +29675,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L835", - "community": 45, + "community": 610, "norm_label": "testprometheushealth", "id": "tests_test_controllers_coverage_testprometheushealth" }, @@ -29666,7 +29684,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L838", - "community": 45, + "community": 610, "norm_label": ".test_health()", "id": "tests_test_controllers_coverage_testprometheushealth_test_health" }, @@ -29675,7 +29693,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L849", - "community": 99, + "community": 45, "norm_label": "testprometheusgetsessions", "id": "tests_test_controllers_coverage_testprometheusgetsessions" }, @@ -29684,7 +29702,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L852", - "community": 99, + "community": 45, "norm_label": ".test_get_sessions()", "id": "tests_test_controllers_coverage_testprometheusgetsessions_test_get_sessions" }, @@ -29693,7 +29711,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L867", - "community": 99, + "community": 45, "norm_label": "testprometheuscreatesession", "id": "tests_test_controllers_coverage_testprometheuscreatesession" }, @@ -29702,7 +29720,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L870", - "community": 99, + "community": 45, "norm_label": ".test_create_session()", "id": "tests_test_controllers_coverage_testprometheuscreatesession_test_create_session" }, @@ -29774,7 +29792,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L997", - "community": 99, + "community": 584, "norm_label": "testprometheusdeletesession", "id": "tests_test_controllers_coverage_testprometheusdeletesession" }, @@ -29783,7 +29801,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1000", - "community": 99, + "community": 584, "norm_label": ".test_delete_session_success()", "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_success" }, @@ -29792,7 +29810,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1010", - "community": 99, + "community": 584, "norm_label": ".test_delete_session_not_found()", "id": "tests_test_controllers_coverage_testprometheusdeletesession_test_delete_session_not_found" }, @@ -29810,7 +29828,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1023", - "community": 99, + "community": 148, "norm_label": ".test_chat_new_session()", "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_new_session" }, @@ -29918,7 +29936,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1202", - "community": 14, + "community": 588, "norm_label": ".test_generate_key_admin_bypasses_permission_check()", "id": "tests_test_controllers_coverage_teststocksapigeneratekey_test_generate_key_admin_bypasses_permission_check" }, @@ -29927,7 +29945,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1214", - "community": 14, + "community": 609, "norm_label": ".test_generate_key_exception()", "id": "tests_test_controllers_coverage_teststocksapigeneratekey_test_generate_key_exception" }, @@ -29936,7 +29954,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1229", - "community": 578, + "community": 568, "norm_label": "testaddroletouser", "id": "tests_test_controllers_coverage_testaddroletouser" }, @@ -29945,7 +29963,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1232", - "community": 584, + "community": 568, "norm_label": ".test_add_role_success()", "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_success" }, @@ -29990,7 +30008,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1282", - "community": 493, + "community": 578, "norm_label": ".test_get_current_user_valid_session()", "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_valid_session" }, @@ -30008,7 +30026,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1323", - "community": 535, + "community": 493, "norm_label": ".test_get_current_user_not_found()", "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_not_found" }, @@ -30044,7 +30062,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1384", - "community": 45, + "community": 43, "norm_label": ".test_empty_password_raises()", "id": "tests_test_controllers_coverage_testhashpasswordempty_test_empty_password_raises" }, @@ -30143,7 +30161,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L58", - "community": 99, + "community": 120, "norm_label": "return (client, app) with prometheus router and mocked deps.", "id": "tests_test_controllers_coverage_rationale_58" }, @@ -30170,7 +30188,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L131", - "community": 45, + "community": 491, "norm_label": "covers line 28: get /auth/health.", "id": "tests_test_controllers_coverage_rationale_131" }, @@ -30179,7 +30197,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L147", - "community": 45, + "community": 120, "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", "id": "tests_test_controllers_coverage_rationale_147" }, @@ -30224,7 +30242,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L216", - "community": 45, + "community": 120, "norm_label": "covers lines 87-93, 102: login success and failure paths.", "id": "tests_test_controllers_coverage_rationale_216" }, @@ -30251,7 +30269,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L258", - "community": 45, + "community": 120, "norm_label": "covers lines 107, 109-130, 133: logout token extraction and revocation.", "id": "tests_test_controllers_coverage_rationale_258" }, @@ -30269,7 +30287,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L281", - "community": 45, + "community": 120, "norm_label": "covers lines 111-113: token extracted from authorization bearer header.", "id": "tests_test_controllers_coverage_rationale_281" }, @@ -30314,7 +30332,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L345", - "community": 45, + "community": 491, "norm_label": "covers lines 139, 141-149: googlelogin endpoint.", "id": "tests_test_controllers_coverage_rationale_345" }, @@ -30341,7 +30359,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L391", - "community": 45, + "community": 120, "norm_label": "covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googlecallba", "id": "tests_test_controllers_coverage_rationale_391" }, @@ -30476,7 +30494,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L728", - "community": 120, + "community": 136, "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_728" }, @@ -30485,7 +30503,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L731", - "community": 120, + "community": 136, "norm_label": "covers lines 126, 131, 135-136.", "id": "tests_test_controllers_coverage_rationale_731" }, @@ -30494,7 +30512,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L758", - "community": 120, + "community": 136, "norm_label": "covers lines 127-129: session not found.", "id": "tests_test_controllers_coverage_rationale_758" }, @@ -30503,7 +30521,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L780", - "community": 120, + "community": 136, "norm_label": "covers lines 132-133: revokesession returns false.", "id": "tests_test_controllers_coverage_rationale_780" }, @@ -30530,7 +30548,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L836", - "community": 45, + "community": 610, "norm_label": "covers line 24: get /prometheus/health.", "id": "tests_test_controllers_coverage_rationale_836" }, @@ -30539,7 +30557,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L850", - "community": 99, + "community": 45, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_850" }, @@ -30548,7 +30566,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L868", - "community": 99, + "community": 45, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_868" }, @@ -30620,7 +30638,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L998", - "community": 99, + "community": 584, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_998" }, @@ -30629,7 +30647,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1001", - "community": 99, + "community": 584, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_1001" }, @@ -30638,7 +30656,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1011", - "community": 99, + "community": 584, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1011" }, @@ -30656,7 +30674,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1024", - "community": 99, + "community": 148, "norm_label": "covers lines 118-119: sessionid is none, new session created.", "id": "tests_test_controllers_coverage_rationale_1024" }, @@ -30737,7 +30755,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1203", - "community": 14, + "community": 609, "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", "id": "tests_test_controllers_coverage_rationale_1203" }, @@ -30746,7 +30764,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1215", - "community": 14, + "community": 609, "norm_label": "covers lines 61-63: exception during key generation (admin path).", "id": "tests_test_controllers_coverage_rationale_1215" }, @@ -30755,7 +30773,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1230", - "community": 578, + "community": 568, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1230" }, @@ -30764,7 +30782,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1233", - "community": 584, + "community": 568, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1233" }, @@ -30791,7 +30809,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1276", - "community": 493, + "community": 578, "norm_label": "covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: usermanager.getc", "id": "tests_test_controllers_coverage_rationale_1276" }, @@ -30800,7 +30818,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1283", - "community": 493, + "community": 578, "norm_label": "covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", "id": "tests_test_controllers_coverage_rationale_1283" }, @@ -30818,7 +30836,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1324", - "community": 535, + "community": 493, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1324" }, @@ -31763,7 +31781,7 @@ "file_type": "code", "source_file": "tests/test_harness_state.py", "source_location": "L1", - "community": 138, + "community": 93, "norm_label": "test_harness_state.py", "id": "tests_test_harness_state_py" }, @@ -31871,7 +31889,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L1", - "community": 138, + "community": 611, "norm_label": "test_http_session_coverage.py", "id": "tests_test_http_session_coverage_py" }, @@ -31880,7 +31898,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L8", - "community": 138, + "community": 611, "norm_label": "testgetsession", "id": "tests_test_http_session_coverage_testgetsession" }, @@ -31889,7 +31907,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L9", - "community": 138, + "community": 611, "norm_label": ".test_returns_same_session()", "id": "tests_test_http_session_coverage_testgetsession_test_returns_same_session" }, @@ -31898,7 +31916,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L16", - "community": 138, + "community": 611, "norm_label": ".test_returns_requests_session()", "id": "tests_test_http_session_coverage_testgetsession_test_returns_requests_session" }, @@ -31907,7 +31925,7 @@ "file_type": "rationale", "source_file": "tests/test_http_session_coverage.py", "source_location": "L1", - "community": 138, + "community": 611, "norm_label": "tests for main/utils/http_session.py \u2014 covers all branches.", "id": "tests_test_http_session_coverage_rationale_1" }, @@ -32213,7 +32231,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L1", - "community": 122, + "community": 599, "norm_label": "test_logging_config_coverage.py", "id": "tests_test_logging_config_coverage_py" }, @@ -32222,7 +32240,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L8", - "community": 122, + "community": 599, "norm_label": "testdiscordhandleremit", "id": "tests_test_logging_config_coverage_testdiscordhandleremit" }, @@ -32231,7 +32249,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L9", - "community": 122, + "community": 599, "norm_label": "._make_handler()", "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_handler" }, @@ -32240,7 +32258,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L14", - "community": 122, + "community": 599, "norm_label": "._make_record()", "id": "tests_test_logging_config_coverage_testdiscordhandleremit_make_record" }, @@ -32249,7 +32267,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L27", - "community": 122, + "community": 599, "norm_label": "test_discord_disabled()", "id": "tests_test_logging_config_coverage_test_discord_disabled" }, @@ -32258,7 +32276,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L35", - "community": 122, + "community": 599, "norm_label": "test_discord_no_webhook()", "id": "tests_test_logging_config_coverage_test_discord_no_webhook" }, @@ -32267,7 +32285,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L43", - "community": 122, + "community": 599, "norm_label": "test_level_below_error()", "id": "tests_test_logging_config_coverage_test_level_below_error" }, @@ -32276,7 +32294,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L52", - "community": 122, + "community": 599, "norm_label": "test_submit_called_on_error()", "id": "tests_test_logging_config_coverage_test_submit_called_on_error" }, @@ -32285,7 +32303,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L62", - "community": 122, + "community": 599, "norm_label": "test_message_truncation()", "id": "tests_test_logging_config_coverage_test_message_truncation" }, @@ -32294,7 +32312,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L77", - "community": 122, + "community": 599, "norm_label": "test_exception_in_submit()", "id": "tests_test_logging_config_coverage_test_exception_in_submit" }, @@ -32303,7 +32321,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L88", - "community": 122, + "community": 599, "norm_label": "test_with_exception_info()", "id": "tests_test_logging_config_coverage_test_with_exception_info" }, @@ -32339,7 +32357,7 @@ "file_type": "rationale", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L1", - "community": 122, + "community": 599, "norm_label": "tests for main/utils/logging_config.py \u2014 covers discordhandler branches.", "id": "tests_test_logging_config_coverage_rationale_1" }, @@ -32357,7 +32375,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L8", - "community": 140, + "community": 474, "norm_label": "_create_memory()", "id": "tests_test_memory_dedup_create_memory" }, @@ -32366,7 +32384,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L12", - "community": 140, + "community": 474, "norm_label": "_count_memories()", "id": "tests_test_memory_dedup_count_memories" }, @@ -32375,7 +32393,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L20", - "community": 140, + "community": 474, "norm_label": "_get_memory()", "id": "tests_test_memory_dedup_get_memory" }, @@ -32393,7 +32411,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L29", - "community": 140, + "community": 474, "norm_label": ".test_exact_same_key_updates()", "id": "tests_test_memory_dedup_testexactsamekeyupdates_test_exact_same_key_updates" }, @@ -32411,7 +32429,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L37", - "community": 140, + "community": 474, "norm_label": ".test_similar_key_merges()", "id": "tests_test_memory_dedup_testsimilarkeymerges_test_similar_key_merges" }, @@ -32429,7 +32447,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L47", - "community": 140, + "community": 474, "norm_label": ".test_different_keys_no_merge()", "id": "tests_test_memory_dedup_testdifferentkeysnomerge_test_different_keys_no_merge" }, @@ -32447,7 +32465,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L56", - "community": 140, + "community": 474, "norm_label": ".test_merge_boosts_score()", "id": "tests_test_memory_dedup_testmergeboostsscore_test_merge_boosts_score" }, @@ -32465,7 +32483,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L65", - "community": 140, + "community": 474, "norm_label": ".test_merge_increments_access()", "id": "tests_test_memory_dedup_testmergeincrementsaccess_test_merge_increments_access" }, @@ -32483,7 +32501,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L74", - "community": 140, + "community": 474, "norm_label": ".test_threshold_boundary()", "id": "tests_test_memory_dedup_testthresholdboundary_test_threshold_boundary" }, @@ -32492,7 +32510,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L38", - "community": 140, + "community": 474, "norm_label": "keys with jaccard > 0.8 should merge.", "id": "tests_test_memory_dedup_rationale_38" }, @@ -32501,7 +32519,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L48", - "community": 140, + "community": 474, "norm_label": "keys with low similarity should not merge.", "id": "tests_test_memory_dedup_rationale_48" }, @@ -32510,7 +32528,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L75", - "community": 140, + "community": 474, "norm_label": "keys with jaccard <= 0.8 should not merge.", "id": "tests_test_memory_dedup_rationale_75" }, @@ -32600,7 +32618,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L84", - "community": 518, + "community": 140, "norm_label": "testarchive", "id": "tests_test_memory_maintenance_testarchive" }, @@ -33149,7 +33167,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L60", - "community": 54, + "community": 561, "norm_label": ".test_memory_tool_names_unchanged()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_memory_tool_names_unchanged" }, @@ -33158,7 +33176,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L64", - "community": 54, + "community": 614, "norm_label": "testtoolregistry", "id": "tests_test_memory_tools_wiring_testtoolregistry" }, @@ -33167,7 +33185,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L67", - "community": 54, + "community": 614, "norm_label": ".test_registry_contains_memory_tools()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_contains_memory_tools" }, @@ -33176,7 +33194,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L71", - "community": 54, + "community": 614, "norm_label": ".test_registry_values_are_callable()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_values_are_callable" }, @@ -33185,7 +33203,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L75", - "community": 54, + "community": 614, "norm_label": ".test_registry_matches_tool_names()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_matches_tool_names" }, @@ -33194,7 +33212,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L79", - "community": 575, + "community": 613, "norm_label": "testmakechatincludesmemorytools", "id": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" }, @@ -33266,7 +33284,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L65", - "community": 54, + "community": 614, "norm_label": "tool_registry pattern must work correctly.", "id": "tests_test_memory_tools_wiring_rationale_65" }, @@ -33275,7 +33293,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L80", - "community": 575, + "community": 613, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_80" }, @@ -34877,7 +34895,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L151", - "community": 54, + "community": 616, "norm_label": "testtoolregistry", "id": "tests_test_prometheus_tools_testtoolregistry" }, @@ -34886,7 +34904,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L152", - "community": 54, + "community": 616, "norm_label": ".test_registry_contains_memory_tools()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_contains_memory_tools" }, @@ -34895,7 +34913,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L156", - "community": 54, + "community": 616, "norm_label": ".test_registry_values_are_callable()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_values_are_callable" }, @@ -34904,7 +34922,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L160", - "community": 54, + "community": 616, "norm_label": ".test_registry_matches_tool_names()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_matches_tool_names" }, @@ -35201,7 +35219,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L1", - "community": 33, + "community": 600, "norm_label": "test_request_id.py", "id": "tests_test_request_id_py" }, @@ -35210,7 +35228,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L14", - "community": 33, + "community": 600, "norm_label": "app()", "id": "tests_test_request_id_app" }, @@ -35219,7 +35237,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L30", - "community": 33, + "community": 600, "norm_label": "client()", "id": "tests_test_request_id_client" }, @@ -35228,7 +35246,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L34", - "community": 33, + "community": 600, "norm_label": "testrequestidmiddleware", "id": "tests_test_request_id_testrequestidmiddleware" }, @@ -35237,7 +35255,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L35", - "community": 33, + "community": 600, "norm_label": ".test_generates_uuid_when_no_header()", "id": "tests_test_request_id_testrequestidmiddleware_test_generates_uuid_when_no_header" }, @@ -35246,7 +35264,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L44", - "community": 33, + "community": 600, "norm_label": ".test_returns_generated_uuid_in_body()", "id": "tests_test_request_id_testrequestidmiddleware_test_returns_generated_uuid_in_body" }, @@ -35255,7 +35273,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L51", - "community": 33, + "community": 600, "norm_label": ".test_uses_client_provided_request_id()", "id": "tests_test_request_id_testrequestidmiddleware_test_uses_client_provided_request_id" }, @@ -35264,7 +35282,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L57", - "community": 33, + "community": 600, "norm_label": ".test_response_header_matches_request()", "id": "tests_test_request_id_testrequestidmiddleware_test_response_header_matches_request" }, @@ -35273,7 +35291,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L62", - "community": 33, + "community": 600, "norm_label": ".test_different_requests_get_different_ids()", "id": "tests_test_request_id_testrequestidmiddleware_test_different_requests_get_different_ids" }, @@ -35282,7 +35300,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L67", - "community": 33, + "community": 600, "norm_label": ".test_context_var_available_in_route()", "id": "tests_test_request_id_testrequestidmiddleware_test_context_var_available_in_route" }, @@ -35291,7 +35309,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L72", - "community": 33, + "community": 600, "norm_label": ".test_empty_x_request_id_header_generates_uuid()", "id": "tests_test_request_id_testrequestidmiddleware_test_empty_x_request_id_header_generates_uuid" }, @@ -35300,7 +35318,7 @@ "file_type": "code", "source_file": "tests/test_request_id.py", "source_location": "L81", - "community": 33, + "community": 600, "norm_label": ".test_middleware_preserves_response_body()", "id": "tests_test_request_id_testrequestidmiddleware_test_middleware_preserves_response_body" }, @@ -35489,7 +35507,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L1", - "community": 45, + "community": 491, "norm_label": "test_roles_coverage.py", "id": "tests_test_roles_coverage_py" }, @@ -35606,7 +35624,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L45", - "community": 45, + "community": 491, "norm_label": "testrequirepermission", "id": "tests_test_roles_coverage_testrequirepermission" }, @@ -35615,7 +35633,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L46", - "community": 45, + "community": 491, "norm_label": ".test_raises_403_when_missing()", "id": "tests_test_roles_coverage_testrequirepermission_test_raises_403_when_missing" }, @@ -35624,7 +35642,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L64", - "community": 45, + "community": 491, "norm_label": ".test_passes_when_has_permission()", "id": "tests_test_roles_coverage_testrequirepermission_test_passes_when_has_permission" }, @@ -35633,7 +35651,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L83", - "community": 45, + "community": 491, "norm_label": "testpermissionall", "id": "tests_test_roles_coverage_testpermissionall" }, @@ -35642,7 +35660,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L84", - "community": 45, + "community": 491, "norm_label": ".test_all_includes_all_permissions()", "id": "tests_test_roles_coverage_testpermissionall_test_all_includes_all_permissions" }, @@ -35651,7 +35669,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L92", - "community": 45, + "community": 491, "norm_label": "testroleshierarchy", "id": "tests_test_roles_coverage_testroleshierarchy" }, @@ -35660,7 +35678,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L93", - "community": 45, + "community": 491, "norm_label": ".test_premium_includes_user()", "id": "tests_test_roles_coverage_testroleshierarchy_test_premium_includes_user" }, @@ -35669,7 +35687,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L96", - "community": 45, + "community": 491, "norm_label": ".test_enterprise_includes_starter()", "id": "tests_test_roles_coverage_testroleshierarchy_test_enterprise_includes_starter" }, @@ -35678,7 +35696,7 @@ "file_type": "code", "source_file": "tests/test_roles_coverage.py", "source_location": "L99", - "community": 45, + "community": 491, "norm_label": ".test_admin_includes_all()", "id": "tests_test_roles_coverage_testroleshierarchy_test_admin_includes_all" }, @@ -35687,7 +35705,7 @@ "file_type": "rationale", "source_file": "tests/test_roles_coverage.py", "source_location": "L1", - "community": 45, + "community": 491, "norm_label": "tests for main/utils/roles.py \u2014 covers requirepermission and edge cases.", "id": "tests_test_roles_coverage_rationale_1" }, @@ -36083,7 +36101,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L6", - "community": 49, + "community": 604, "norm_label": "testsandboxtooldefinitions", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions" }, @@ -36092,7 +36110,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L7", - "community": 49, + "community": 604, "norm_label": ".test_execute_code_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_in_registry" }, @@ -36101,7 +36119,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L10", - "community": 49, + "community": 604, "norm_label": ".test_read_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_file_in_registry" }, @@ -36110,7 +36128,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L13", - "community": 49, + "community": 604, "norm_label": ".test_write_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_write_file_in_registry" }, @@ -36119,7 +36137,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L16", - "community": 49, + "community": 604, "norm_label": ".test_list_files_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_list_files_in_registry" }, @@ -36128,7 +36146,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L19", - "community": 49, + "community": 604, "norm_label": ".test_execute_code_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_execute_code_has_docstring" }, @@ -36569,7 +36587,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L15", - "community": 16, + "community": 601, "norm_label": "teststatetoolfunctions", "id": "tests_test_state_tools_teststatetoolfunctions" }, @@ -36578,7 +36596,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L16", - "community": 16, + "community": 601, "norm_label": ".test_get_state_has_docstring()", "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_has_docstring" }, @@ -36587,7 +36605,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L20", - "community": 16, + "community": 601, "norm_label": ".test_set_state_has_docstring()", "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_has_docstring" }, @@ -36596,7 +36614,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L24", - "community": 16, + "community": 601, "norm_label": ".test_get_state_signature()", "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_signature" }, @@ -36605,7 +36623,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L31", - "community": 16, + "community": 601, "norm_label": ".test_set_state_signature()", "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_signature" }, @@ -36614,7 +36632,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L38", - "community": 16, + "community": 601, "norm_label": ".test_get_state_has_type_hints()", "id": "tests_test_state_tools_teststatetoolfunctions_test_get_state_has_type_hints" }, @@ -36623,7 +36641,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L44", - "community": 16, + "community": 601, "norm_label": ".test_set_state_has_type_hints()", "id": "tests_test_state_tools_teststatetoolfunctions_test_set_state_has_type_hints" }, @@ -36632,7 +36650,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L50", - "community": 16, + "community": 601, "norm_label": ".test_state_tools_in_registry()", "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tools_in_registry" }, @@ -36641,7 +36659,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L56", - "community": 16, + "community": 601, "norm_label": ".test_registry_has_all_tools()", "id": "tests_test_state_tools_teststatetoolfunctions_test_registry_has_all_tools" }, @@ -36749,7 +36767,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L1", - "community": 84, + "community": 188, "norm_label": "test_status_endpoint.py", "id": "tests_test_status_endpoint_py" }, @@ -36758,7 +36776,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L9", - "community": 84, + "community": 188, "norm_label": "statusclient()", "id": "tests_test_status_endpoint_statusclient" }, @@ -36767,7 +36785,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L16", - "community": 84, + "community": 188, "norm_label": "teststatusendpoint", "id": "tests_test_status_endpoint_teststatusendpoint" }, @@ -36776,7 +36794,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L17", - "community": 84, + "community": 188, "norm_label": ".test_status_returns_200()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_returns_200" }, @@ -36785,7 +36803,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L21", - "community": 84, + "community": 188, "norm_label": ".test_status_has_healthy()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_healthy" }, @@ -36794,7 +36812,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L25", - "community": 84, + "community": 188, "norm_label": ".test_status_has_uptime_format()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_uptime_format" }, @@ -36803,7 +36821,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L30", - "community": 84, + "community": 188, "norm_label": ".test_status_has_services_dict()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_has_services_dict" }, @@ -36812,7 +36830,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L35", - "community": 84, + "community": 188, "norm_label": ".test_status_services_contain_expected_keys()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_services_contain_expected_keys" }, @@ -36821,7 +36839,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L41", - "community": 84, + "community": 188, "norm_label": ".test_status_local_service_has_port_and_type()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_local_service_has_port_and_type" }, @@ -36830,7 +36848,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L51", - "community": 84, + "community": 188, "norm_label": ".test_status_disabled_service()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_disabled_service" }, @@ -36839,7 +36857,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L57", - "community": 84, + "community": 188, "norm_label": ".test_status_scraper_no_port()", "id": "tests_test_status_endpoint_teststatusendpoint_test_status_scraper_no_port" }, @@ -36848,7 +36866,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L63", - "community": 84, + "community": 188, "norm_label": ".test_health_endpoint()", "id": "tests_test_status_endpoint_teststatusendpoint_test_health_endpoint" }, @@ -36857,7 +36875,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L69", - "community": 84, + "community": 188, "norm_label": "testscrapertrigger", "id": "tests_test_status_endpoint_testscrapertrigger" }, @@ -36866,7 +36884,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L70", - "community": 84, + "community": 188, "norm_label": ".test_scraper_trigger_debug_mode()", "id": "tests_test_status_endpoint_testscrapertrigger_test_scraper_trigger_debug_mode" }, @@ -36875,7 +36893,7 @@ "file_type": "code", "source_file": "tests/test_status_endpoint.py", "source_location": "L77", - "community": 84, + "community": 188, "norm_label": ".test_scraper_trigger_not_debug()", "id": "tests_test_status_endpoint_testscrapertrigger_test_scraper_trigger_not_debug" }, @@ -36884,7 +36902,7 @@ "file_type": "rationale", "source_file": "tests/test_status_endpoint.py", "source_location": "L1", - "community": 84, + "community": 188, "norm_label": "tests for run.py /status endpoint \u2014 covers status response structure.", "id": "tests_test_status_endpoint_rationale_1" }, @@ -36893,7 +36911,7 @@ "file_type": "rationale", "source_file": "tests/test_status_endpoint.py", "source_location": "L10", - "community": 84, + "community": 188, "norm_label": "create a test client for the status endpoint without running lifespan.", "id": "tests_test_status_endpoint_rationale_10" }, @@ -37298,7 +37316,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L473", - "community": 3, + "community": 520, "norm_label": ".test_deserialize_multiple_special_cols_with_none()", "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_multiple_special_cols_with_none" }, @@ -37523,7 +37541,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L686", - "community": 474, + "community": 28, "norm_label": ".test_historical_with_date_range()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_date_range" }, @@ -37622,7 +37640,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L766", - "community": 188, + "community": 17, "norm_label": ".test_fundamental_with_invalid_date()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_invalid_date" }, @@ -37676,7 +37694,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L819", - "community": 39, + "community": 17, "norm_label": ".test_fundamental_empty_search_string_no_dedup()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_empty_search_string_no_dedup" }, @@ -37685,7 +37703,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L828", - "community": 39, + "community": 17, "norm_label": ".test_fundamental_no_time_column()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_no_time_column" }, @@ -37730,7 +37748,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L890", - "community": 17, + "community": 39, "norm_label": ".test_fundamental_search_fallback_string_match()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_search_fallback_string_match" }, @@ -37766,7 +37784,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L963", - "community": 112, + "community": 3, "norm_label": ".test_fundamental_requires_search_fields_or_dates()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_requires_search_fields_or_dates" }, @@ -37928,7 +37946,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1139", - "community": 529, + "community": 10, "norm_label": ".test_cotations_http_route()", "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_http_route" }, @@ -38252,7 +38270,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L474", - "community": 3, + "community": 520, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_474" }, @@ -38324,7 +38342,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L687", - "community": 474, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_687" }, @@ -38360,7 +38378,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L767", - "community": 188, + "community": 17, "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", "id": "tests_test_stocks_api_coverage_rationale_767" }, @@ -38369,7 +38387,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L820", - "community": 39, + "community": 17, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_820" }, @@ -38378,7 +38396,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L829", - "community": 39, + "community": 17, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_829" }, @@ -38387,7 +38405,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L842", - "community": 188, + "community": 17, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_842" }, @@ -38423,7 +38441,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L891", - "community": 17, + "community": 39, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_891" }, @@ -38495,7 +38513,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1140", - "community": 529, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1140" }, @@ -39530,7 +39548,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L1", - "community": 122, + "community": 595, "norm_label": "test_thread_safety.py", "id": "tests_test_thread_safety_py" }, @@ -39539,7 +39557,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L21", - "community": 122, + "community": 574, "norm_label": "testgetsession", "id": "tests_test_thread_safety_testgetsession" }, @@ -39548,7 +39566,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L24", - "community": 122, + "community": 574, "norm_label": ".test_same_session_within_same_thread()", "id": "tests_test_thread_safety_testgetsession_test_same_session_within_same_thread" }, @@ -39557,7 +39575,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L32", - "community": 122, + "community": 574, "norm_label": ".test_different_sessions_in_different_threads()", "id": "tests_test_thread_safety_testgetsession_test_different_sessions_in_different_threads" }, @@ -39566,7 +39584,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L52", - "community": 122, + "community": 574, "norm_label": ".test_isolation_under_high_concurrency()", "id": "tests_test_thread_safety_testgetsession_test_isolation_under_high_concurrency" }, @@ -39575,7 +39593,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L73", - "community": 122, + "community": 574, "norm_label": ".test_session_is_requests_session()", "id": "tests_test_thread_safety_testgetsession_test_session_is_requests_session" }, @@ -39620,7 +39638,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L175", - "community": 122, + "community": 595, "norm_label": "testconcurrentgetsession", "id": "tests_test_thread_safety_testconcurrentgetsession" }, @@ -39629,7 +39647,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L178", - "community": 122, + "community": 595, "norm_label": ".test_getsession_returns_thread_local_sessions()", "id": "tests_test_thread_safety_testconcurrentgetsession_test_getsession_returns_thread_local_sessions" }, @@ -39638,7 +39656,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L199", - "community": 122, + "community": 595, "norm_label": ".test_connectivity_uses_getsession()", "id": "tests_test_thread_safety_testconcurrentgetsession_test_connectivity_uses_getsession" }, @@ -39647,7 +39665,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L1", - "community": 122, + "community": 595, "norm_label": "tests for thread safety utilities (issues 5 & 6). issue 5: discordhandler use", "id": "tests_test_thread_safety_rationale_1" }, @@ -39656,7 +39674,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L22", - "community": 122, + "community": 574, "norm_label": "verify that getsession() returns per-thread session instances.", "id": "tests_test_thread_safety_rationale_22" }, @@ -39665,7 +39683,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L25", - "community": 122, + "community": 574, "norm_label": "calling getsession() twice in the same thread returns the same object.", "id": "tests_test_thread_safety_rationale_25" }, @@ -39674,7 +39692,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L33", - "community": 122, + "community": 574, "norm_label": "two threads must not share a session object.", "id": "tests_test_thread_safety_rationale_33" }, @@ -39683,7 +39701,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L53", - "community": 122, + "community": 574, "norm_label": "with 20 concurrent threads, every thread must get its own session.", "id": "tests_test_thread_safety_rationale_53" }, @@ -39692,7 +39710,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L74", - "community": 122, + "community": 574, "norm_label": "the returned object must be a real requests.session.", "id": "tests_test_thread_safety_rationale_74" }, @@ -39737,7 +39755,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L176", - "community": 122, + "community": 595, "norm_label": "verify getsession returns thread-local sessions under concurrency.", "id": "tests_test_thread_safety_rationale_176" }, @@ -39746,7 +39764,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L179", - "community": 122, + "community": 595, "norm_label": "getsession() must give each thread its own session.", "id": "tests_test_thread_safety_rationale_179" }, @@ -39755,7 +39773,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L200", - "community": 122, + "community": 595, "norm_label": "connectivity.checkserviceconnection must call getsession(), not use a global ses", "id": "tests_test_thread_safety_rationale_200" }, @@ -41483,7 +41501,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1196", - "community": 14, + "community": 588, "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", "id": "tests_test_controllers_coverage_rationale_1196" }, @@ -41492,7 +41510,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1208", - "community": 14, + "community": 609, "norm_label": "covers lines 61-63: exception during key generation (admin path).", "id": "tests_test_controllers_coverage_rationale_1208" }, @@ -41501,7 +41519,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1223", - "community": 578, + "community": 568, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1223" }, @@ -41510,7 +41528,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1226", - "community": 584, + "community": 568, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1226" }, @@ -41555,7 +41573,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1317", - "community": 535, + "community": 493, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1317" }, @@ -41780,7 +41798,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L30", - "community": 140, + "community": 474, "norm_label": "keys with jaccard > 0.8 should merge.", "id": "tests_test_memory_dedup_rationale_30" }, @@ -41789,7 +41807,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L40", - "community": 140, + "community": 474, "norm_label": "keys with low similarity should not merge.", "id": "tests_test_memory_dedup_rationale_40" }, @@ -41798,7 +41816,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L67", - "community": 140, + "community": 474, "norm_label": "keys with jaccard <= 0.8 should not merge.", "id": "tests_test_memory_dedup_rationale_67" }, @@ -44606,7 +44624,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L114", - "community": 16, + "community": 100, "norm_label": "test_get_state_no_state_returns_error()", "id": "tests_test_prometheus_tools_test_get_state_no_state_returns_error" }, @@ -44615,7 +44633,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L119", - "community": 100, + "community": 546, "norm_label": "test_set_state_no_state_returns_error()", "id": "tests_test_prometheus_tools_test_set_state_no_state_returns_error" }, @@ -44651,7 +44669,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L1", - "community": 135, + "community": 535, "norm_label": "cache.py", "id": "main_app_prometheus_cache_py" }, @@ -44660,7 +44678,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L7", - "community": 135, + "community": 535, "norm_label": "resultcache", "id": "prometheus_cache_resultcache" }, @@ -44669,7 +44687,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L8", - "community": 135, + "community": 535, "norm_label": ".__init__()", "id": "prometheus_cache_resultcache_init" }, @@ -44678,7 +44696,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L11", - "community": 135, + "community": 535, "norm_label": ".cachepath()", "id": "prometheus_cache_resultcache_cachepath" }, @@ -44687,7 +44705,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L15", - "community": 135, + "community": 535, "norm_label": ".get()", "id": "prometheus_cache_resultcache_get" }, @@ -44696,7 +44714,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L21", - "community": 135, + "community": 535, "norm_label": ".set()", "id": "prometheus_cache_resultcache_set" }, @@ -44705,7 +44723,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L31", - "community": 135, + "community": 535, "norm_label": ".invalidate()", "id": "prometheus_cache_resultcache_invalidate" }, @@ -44714,7 +44732,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L38", - "community": 135, + "community": 535, "norm_label": ".exists()", "id": "prometheus_cache_resultcache_exists" }, @@ -45344,7 +45362,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L12", - "community": 49, + "community": 604, "norm_label": ".test_read_sandbox_file_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_in_registry" }, @@ -45353,7 +45371,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L15", - "community": 49, + "community": 604, "norm_label": ".test_check_cache_in_registry()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_in_registry" }, @@ -45362,7 +45380,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L23", - "community": 49, + "community": 604, "norm_label": ".test_read_sandbox_file_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_read_sandbox_file_has_docstring" }, @@ -45371,7 +45389,7 @@ "file_type": "code", "source_file": "tests/test_sandbox_tools.py", "source_location": "L28", - "community": 49, + "community": 604, "norm_label": ".test_check_cache_has_docstring()", "id": "tests_test_sandbox_tools_testsandboxtooldefinitions_test_check_cache_has_docstring" }, @@ -45704,7 +45722,7 @@ "file_type": "code", "source_file": "main/app/prometheus/cache.py", "source_location": "L19", - "community": 135, + "community": 535, "norm_label": "._cache_path()", "id": "prometheus_cache_resultcache_cache_path" }, @@ -45713,7 +45731,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L1", - "community": 135, + "community": 535, "norm_label": "resultcache \u2014 sha256-keyed file-based cache for computed results.", "id": "prometheus_cache_rationale_1" }, @@ -45722,7 +45740,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L10", - "community": 135, + "community": 535, "norm_label": "file-based cache keyed by sha256 of code. stores results as json under:", "id": "prometheus_cache_rationale_10" }, @@ -45731,7 +45749,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L24", - "community": 135, + "community": 535, "norm_label": "return cached result dict or none if miss.", "id": "prometheus_cache_rationale_24" }, @@ -45740,7 +45758,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L31", - "community": 135, + "community": 535, "norm_label": "store result with timestamp.", "id": "prometheus_cache_rationale_31" }, @@ -45749,7 +45767,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L42", - "community": 135, + "community": 535, "norm_label": "delete all cached results for a session.", "id": "prometheus_cache_rationale_42" }, @@ -45758,7 +45776,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/cache.py", "source_location": "L50", - "community": 135, + "community": 535, "norm_label": "check if a result exists for the given code.", "id": "prometheus_cache_rationale_50" }, @@ -46190,7 +46208,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L44", - "community": 16, + "community": 601, "norm_label": ".test_state_tools_is_list_of_callables()", "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tools_is_list_of_callables" }, @@ -46199,7 +46217,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L50", - "community": 16, + "community": 601, "norm_label": ".test_state_tool_names()", "id": "tests_test_state_tools_teststatetoolfunctions_test_state_tool_names" }, @@ -46244,7 +46262,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/state.py", "source_location": "L22", - "community": 54, + "community": 63, "norm_label": "store a value in state. marks state as changed for context injection.", "id": "prometheus_state_rationale_22" }, @@ -46361,7 +46379,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L46", - "community": 605, + "community": 116, "norm_label": "executememorytool()", "id": "prometheus_tools_executememorytool" }, @@ -46379,7 +46397,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L52", - "community": 140, + "community": 474, "norm_label": "keys with low similarity should not merge.", "id": "tests_test_memory_dedup_rationale_52" }, @@ -46388,7 +46406,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L85", - "community": 140, + "community": 474, "norm_label": "keys with jaccard <= 0.8 should not merge.", "id": "tests_test_memory_dedup_rationale_85" }, @@ -46505,7 +46523,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L52", - "community": 575, + "community": 613, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_52" }, @@ -46541,7 +46559,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L57", - "community": 575, + "community": 613, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_57" }, @@ -46667,7 +46685,7 @@ "file_type": "code", "source_file": "main/utils/models/loader.py", "source_location": "L23", - "community": 605, + "community": 116, "norm_label": "embed()", "id": "models_loader_embed" }, @@ -47000,7 +47018,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1318", - "community": 535, + "community": 493, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1318" }, @@ -47306,7 +47324,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L56", - "community": 575, + "community": 613, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_56" }, @@ -47639,7 +47657,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L48", - "community": 575, + "community": 613, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_48" }, @@ -47738,7 +47756,7 @@ "file_type": "code", "source_file": "main/controller/prometheus_controller.py", "source_location": "L177", - "community": 605, + "community": 116, "norm_label": "creatememory()", "id": "controller_prometheus_controller_creatememory" }, @@ -48548,7 +48566,7 @@ "file_type": "code", "source_file": "main/controller/prometheus_controller.py", "source_location": "L177", - "community": 605, + "community": 116, "norm_label": "create_memory()", "id": "controller_prometheus_controller_create_memory" }, @@ -50249,7 +50267,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L724", - "community": 120, + "community": 136, "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_724" }, @@ -50258,7 +50276,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L727", - "community": 120, + "community": 136, "norm_label": "covers lines 126, 131, 135-136.", "id": "tests_test_controllers_coverage_rationale_727" }, @@ -50267,7 +50285,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L754", - "community": 120, + "community": 136, "norm_label": "covers lines 127-129: session not found.", "id": "tests_test_controllers_coverage_rationale_754" }, @@ -50276,7 +50294,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L776", - "community": 120, + "community": 136, "norm_label": "covers lines 132-133: revokesession returns false.", "id": "tests_test_controllers_coverage_rationale_776" }, @@ -50303,7 +50321,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L832", - "community": 45, + "community": 610, "norm_label": "covers line 24: get /prometheus/health.", "id": "tests_test_controllers_coverage_rationale_832" }, @@ -50312,7 +50330,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L846", - "community": 99, + "community": 45, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_846" }, @@ -50321,7 +50339,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L864", - "community": 99, + "community": 45, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_864" }, @@ -50393,7 +50411,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L994", - "community": 99, + "community": 584, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_994" }, @@ -50402,7 +50420,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L997", - "community": 99, + "community": 584, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_997" }, @@ -50411,7 +50429,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1007", - "community": 99, + "community": 584, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1007" }, @@ -50429,7 +50447,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1020", - "community": 99, + "community": 148, "norm_label": "covers lines 111-112: sessionid is none, new session created.", "id": "tests_test_controllers_coverage_rationale_1020" }, @@ -50510,7 +50528,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1192", - "community": 14, + "community": 588, "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", "id": "tests_test_controllers_coverage_rationale_1192" }, @@ -50519,7 +50537,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1204", - "community": 14, + "community": 609, "norm_label": "covers lines 61-63: exception during key generation (admin path).", "id": "tests_test_controllers_coverage_rationale_1204" }, @@ -50528,7 +50546,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1219", - "community": 578, + "community": 568, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1219" }, @@ -50537,7 +50555,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1222", - "community": 584, + "community": 568, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1222" }, @@ -50573,7 +50591,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1273", - "community": 493, + "community": 578, "norm_label": "covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", "id": "tests_test_controllers_coverage_rationale_1273" }, @@ -50591,7 +50609,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1314", - "community": 535, + "community": 493, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1314" }, @@ -50618,7 +50636,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1372", - "community": 535, + "community": 45, "norm_label": "covers line 16: empty password raises valueerror.", "id": "tests_test_controllers_coverage_rationale_1372" }, @@ -50861,7 +50879,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L722", - "community": 120, + "community": 136, "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_722" }, @@ -50870,7 +50888,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L725", - "community": 120, + "community": 136, "norm_label": "covers lines 126, 131, 135-136.", "id": "tests_test_controllers_coverage_rationale_725" }, @@ -50879,7 +50897,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L752", - "community": 120, + "community": 136, "norm_label": "covers lines 127-129: session not found.", "id": "tests_test_controllers_coverage_rationale_752" }, @@ -50888,7 +50906,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L774", - "community": 120, + "community": 136, "norm_label": "covers lines 132-133: revokesession returns false.", "id": "tests_test_controllers_coverage_rationale_774" }, @@ -50915,7 +50933,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L830", - "community": 45, + "community": 610, "norm_label": "covers line 24: get /prometheus/health.", "id": "tests_test_controllers_coverage_rationale_830" }, @@ -50924,7 +50942,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L844", - "community": 99, + "community": 45, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_844" }, @@ -50933,7 +50951,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L862", - "community": 99, + "community": 45, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_862" }, @@ -51005,7 +51023,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L992", - "community": 99, + "community": 584, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_992" }, @@ -51014,7 +51032,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L995", - "community": 99, + "community": 584, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_995" }, @@ -51023,7 +51041,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1005", - "community": 99, + "community": 584, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1005" }, @@ -51041,7 +51059,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1018", - "community": 99, + "community": 148, "norm_label": "covers lines 111-112: sessionid is none, new session created.", "id": "tests_test_controllers_coverage_rationale_1018" }, @@ -51122,7 +51140,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1191", - "community": 14, + "community": 588, "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", "id": "tests_test_controllers_coverage_rationale_1191" }, @@ -51131,7 +51149,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1218", - "community": 578, + "community": 568, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1218" }, @@ -51140,7 +51158,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1221", - "community": 584, + "community": 568, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1221" }, @@ -51176,7 +51194,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1272", - "community": 493, + "community": 578, "norm_label": "covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", "id": "tests_test_controllers_coverage_rationale_1272" }, @@ -51194,7 +51212,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1313", - "community": 535, + "community": 493, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1313" }, @@ -51752,7 +51770,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L550", - "community": 3, + "community": 520, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_550" }, @@ -51851,7 +51869,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L843", - "community": 188, + "community": 17, "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", "id": "tests_test_stocks_api_coverage_rationale_843" }, @@ -51914,7 +51932,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L967", - "community": 17, + "community": 39, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_967" }, @@ -51986,7 +52004,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1216", - "community": 529, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1216" }, @@ -52517,7 +52535,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L549", - "community": 3, + "community": 520, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_549" }, @@ -52589,7 +52607,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L762", - "community": 474, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_762" }, @@ -52625,7 +52643,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L895", - "community": 39, + "community": 17, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_895" }, @@ -52634,7 +52652,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L904", - "community": 39, + "community": 17, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_904" }, @@ -52670,7 +52688,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L964", - "community": 17, + "community": 39, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_964" }, @@ -52742,7 +52760,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1212", - "community": 529, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1212" }, @@ -52886,7 +52904,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1210", - "community": 529, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1210" }, @@ -52904,7 +52922,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L832", - "community": 39, + "community": 17, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_832" }, @@ -52913,7 +52931,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L885", - "community": 39, + "community": 17, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_885" }, @@ -52922,7 +52940,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L894", - "community": 39, + "community": 17, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_894" }, @@ -52958,7 +52976,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L954", - "community": 17, + "community": 39, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_954" }, @@ -53030,7 +53048,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1191", - "community": 529, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1191" }, @@ -53561,7 +53579,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1170", - "community": 529, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1170" }, @@ -53606,7 +53624,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1141", - "community": 529, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1141" }, @@ -53669,7 +53687,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L63", - "community": 157, + "community": 222, "norm_label": "getrealtimecotation()", "id": "controller_stocksapi_controller_getrealtimecotation" }, @@ -53687,7 +53705,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1148", - "community": 529, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1148" }, @@ -53777,7 +53795,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L23", - "community": 157, + "community": 222, "norm_label": "apikeytest()", "id": "controller_stocksapi_controller_apikeytest" }, @@ -53831,7 +53849,7 @@ "file_type": "code", "source_file": "main/utils/http_session.py", "source_location": "L18", - "community": 122, + "community": 612, "norm_label": "cleanup()", "id": "utils_http_session_cleanup" }, @@ -54056,7 +54074,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1194", - "community": 45, + "community": 14, "norm_label": "teststocksapikeytest", "id": "tests_test_controllers_coverage_teststocksapikeytest" }, @@ -54092,7 +54110,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L132", - "community": 45, + "community": 491, "norm_label": "covers line 28: get /auth/health.", "id": "tests_test_controllers_coverage_rationale_132" }, @@ -54101,7 +54119,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L148", - "community": 45, + "community": 120, "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", "id": "tests_test_controllers_coverage_rationale_148" }, @@ -54128,7 +54146,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L228", - "community": 45, + "community": 120, "norm_label": "covers lines 87-93, 102: login success and failure paths.", "id": "tests_test_controllers_coverage_rationale_228" }, @@ -54209,7 +54227,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L379", - "community": 45, + "community": 491, "norm_label": "covers lines 139, 141-149: googlelogin endpoint.", "id": "tests_test_controllers_coverage_rationale_379" }, @@ -54236,7 +54254,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L425", - "community": 45, + "community": 120, "norm_label": "covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googlecallba", "id": "tests_test_controllers_coverage_rationale_425" }, @@ -54353,7 +54371,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L767", - "community": 120, + "community": 136, "norm_label": "covers lines 126-136: delete /user/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_767" }, @@ -54362,7 +54380,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L770", - "community": 120, + "community": 136, "norm_label": "covers lines 126, 131, 135-136.", "id": "tests_test_controllers_coverage_rationale_770" }, @@ -54371,7 +54389,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L797", - "community": 120, + "community": 136, "norm_label": "covers lines 127-129: session not found.", "id": "tests_test_controllers_coverage_rationale_797" }, @@ -54380,7 +54398,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L819", - "community": 120, + "community": 136, "norm_label": "covers lines 132-133: revokesession returns false.", "id": "tests_test_controllers_coverage_rationale_819" }, @@ -54407,7 +54425,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L875", - "community": 45, + "community": 610, "norm_label": "covers line 24: get /prometheus/health.", "id": "tests_test_controllers_coverage_rationale_875" }, @@ -54416,7 +54434,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L889", - "community": 99, + "community": 45, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_889" }, @@ -54425,7 +54443,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L907", - "community": 99, + "community": 45, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_907" }, @@ -54497,7 +54515,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1037", - "community": 99, + "community": 584, "norm_label": "covers lines 95-98: delete /prometheus/sessions/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_1037" }, @@ -54506,7 +54524,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1040", - "community": 99, + "community": 584, "norm_label": "covers lines 95-98: session deleted.", "id": "tests_test_controllers_coverage_rationale_1040" }, @@ -54515,7 +54533,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1050", - "community": 99, + "community": 584, "norm_label": "covers lines 96-97: session not found.", "id": "tests_test_controllers_coverage_rationale_1050" }, @@ -54533,7 +54551,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1063", - "community": 99, + "community": 148, "norm_label": "covers lines 111-112: sessionid is none, new session created.", "id": "tests_test_controllers_coverage_rationale_1063" }, @@ -54623,7 +54641,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1262", - "community": 14, + "community": 609, "norm_label": "covers lines 61-63: exception during key generation (admin path).", "id": "tests_test_controllers_coverage_rationale_1262" }, @@ -54632,7 +54650,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1280", - "community": 584, + "community": 568, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1280" }, @@ -54731,7 +54749,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L9", - "community": 138, + "community": 611, "norm_label": ".test_creates_new_session()", "id": "tests_test_http_session_coverage_testgetsession_test_creates_new_session" }, @@ -54740,7 +54758,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L28", - "community": 122, + "community": 612, "norm_label": "testcleanup", "id": "tests_test_http_session_coverage_testcleanup" }, @@ -54749,7 +54767,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L29", - "community": 122, + "community": 612, "norm_label": ".test_cleanup_closes_session()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_closes_session" }, @@ -54758,7 +54776,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L37", - "community": 122, + "community": 612, "norm_label": ".test_cleanup_no_session()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_no_session" }, @@ -54767,7 +54785,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L46", - "community": 122, + "community": 612, "norm_label": ".test_cleanup_exception_during_close()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_exception_during_close" }, @@ -55145,7 +55163,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L175", - "community": 122, + "community": 595, "norm_label": "testconcurrenthttpproxy", "id": "tests_test_thread_safety_testconcurrenthttpproxy" }, @@ -55154,7 +55172,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L178", - "community": 122, + "community": 595, "norm_label": ".test_proxy_returns_thread_local_sessions()", "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_proxy_returns_thread_local_sessions" }, @@ -55163,7 +55181,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L203", - "community": 122, + "community": 595, "norm_label": ".test_connectivity_uses_getsession()", "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_connectivity_uses_getsession" }, @@ -55172,7 +55190,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L204", - "community": 122, + "community": 595, "norm_label": "connectivity.checkserviceconnection must call getsession(), not use a global ses", "id": "tests_test_thread_safety_rationale_204" }, @@ -55334,7 +55352,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L548", - "community": 3, + "community": 520, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_548" }, @@ -55406,7 +55424,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L761", - "community": 474, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_761" }, @@ -55424,7 +55442,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L831", - "community": 188, + "community": 17, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_831" }, @@ -55433,7 +55451,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L884", - "community": 39, + "community": 17, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_884" }, @@ -55442,7 +55460,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L893", - "community": 39, + "community": 17, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_893" }, @@ -55487,7 +55505,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L953", - "community": 17, + "community": 39, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_953" }, @@ -55667,7 +55685,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L757", - "community": 474, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_757" }, @@ -55694,7 +55712,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L827", - "community": 188, + "community": 17, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_827" }, @@ -55703,7 +55721,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L876", - "community": 39, + "community": 17, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_876" }, @@ -55766,7 +55784,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L756", - "community": 474, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_756" }, @@ -55784,7 +55802,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L826", - "community": 188, + "community": 17, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_826" }, @@ -55793,7 +55811,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L874", - "community": 39, + "community": 46, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_874" }, @@ -55820,7 +55838,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L943", - "community": 17, + "community": 39, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_943" }, @@ -55901,7 +55919,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L710", - "community": 474, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_710" }, @@ -55919,7 +55937,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L780", - "community": 188, + "community": 17, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_780" }, @@ -55928,7 +55946,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L828", - "community": 39, + "community": 17, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_828" }, @@ -55937,7 +55955,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L837", - "community": 39, + "community": 17, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_837" }, @@ -55973,7 +55991,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L897", - "community": 17, + "community": 39, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_897" }, @@ -55982,7 +56000,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L8", - "community": 59, + "community": 618, "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", "id": "tests_test_connectivity_coverage_rationale_8" }, @@ -55991,7 +56009,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L105", - "community": 59, + "community": 617, "norm_label": "checkserviceconnection \u2014 success, not found, errors.", "id": "tests_test_connectivity_coverage_rationale_105" }, @@ -56000,7 +56018,7 @@ "file_type": "rationale", "source_file": "tests/test_status_endpoint.py", "source_location": "L9", - "community": 84, + "community": 188, "norm_label": "create a test client for the status endpoint without running lifespan.", "id": "tests_test_status_endpoint_rationale_9" }, @@ -56072,7 +56090,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L711", - "community": 474, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_711" }, @@ -56090,7 +56108,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L781", - "community": 188, + "community": 17, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_781" }, @@ -56099,7 +56117,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L838", - "community": 39, + "community": 17, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_838" }, @@ -56162,7 +56180,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L27", - "community": 33, + "community": 607, "norm_label": "_build_error_response()", "id": "utils_errors_build_error_response" }, @@ -56171,7 +56189,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L37", - "community": 33, + "community": 607, "norm_label": "http_exception_handler()", "id": "utils_errors_http_exception_handler" }, @@ -56180,7 +56198,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L44", - "community": 33, + "community": 607, "norm_label": "validation_exception_handler()", "id": "utils_errors_validation_exception_handler" }, @@ -56189,7 +56207,7 @@ "file_type": "code", "source_file": "main/utils/errors.py", "source_location": "L56", - "community": 33, + "community": 607, "norm_label": "generic_exception_handler()", "id": "utils_errors_generic_exception_handler" }, @@ -56207,7 +56225,7 @@ "file_type": "code", "source_file": "main/utils/http_session.py", "source_location": "L9", - "community": 122, + "community": 574, "norm_label": "get_session()", "id": "utils_http_session_get_session" }, @@ -56216,7 +56234,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L10", - "community": 122, + "community": 574, "norm_label": "return a requests.session for the current thread. sessions are created la", "id": "utils_http_session_rationale_10" }, @@ -56225,7 +56243,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L23", - "community": 122, + "community": 612, "norm_label": "close the main thread's session at interpreter shutdown.", "id": "utils_http_session_rationale_23" }, @@ -56234,7 +56252,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L203", - "community": 122, + "community": 595, "norm_label": ".test_connectivity_uses_get_session()", "id": "tests_test_thread_safety_testconcurrenthttpproxy_test_connectivity_uses_get_session" }, @@ -56630,7 +56648,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L9", - "community": 122, + "community": 574, "norm_label": "return a requests.session for the current thread. sessions are created la", "id": "utils_http_session_rationale_9" }, @@ -57179,7 +57197,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L705", - "community": 474, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_705" }, @@ -57206,7 +57224,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L775", - "community": 188, + "community": 17, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_775" }, @@ -57215,7 +57233,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L823", - "community": 39, + "community": 17, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_823" }, @@ -57251,7 +57269,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L892", - "community": 17, + "community": 39, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_892" }, @@ -57836,7 +57854,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L135", - "community": 574, + "community": 502, "norm_label": "testqueryoptimization", "id": "tests_test_stocks_cache_testqueryoptimization" }, @@ -57845,7 +57863,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L138", - "community": 574, + "community": 502, "norm_label": ".test_all_optimizations_present()", "id": "tests_test_stocks_cache_testqueryoptimization_test_all_optimizations_present" }, @@ -57854,7 +57872,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L153", - "community": 574, + "community": 502, "norm_label": ".test_query_filter_uses_optimization()", "id": "tests_test_stocks_cache_testqueryoptimization_test_query_filter_uses_optimization" }, @@ -58106,7 +58124,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L136", - "community": 574, + "community": 502, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_cache_rationale_136" }, @@ -58115,7 +58133,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L139", - "community": 574, + "community": 502, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_cache_rationale_139" }, @@ -58124,7 +58142,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L154", - "community": 574, + "community": 502, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_cache_rationale_154" }, @@ -58394,7 +58412,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L138", - "community": 574, + "community": 502, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_cache_rationale_138" }, @@ -58403,7 +58421,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L141", - "community": 574, + "community": 502, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_cache_rationale_141" }, @@ -58412,7 +58430,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L156", - "community": 574, + "community": 502, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_cache_rationale_156" }, @@ -58745,7 +58763,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L137", - "community": 595, + "community": 101, "norm_label": "testqueryoptimization", "id": "tests_test_stocks_optimization_testqueryoptimization" }, @@ -58754,7 +58772,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L140", - "community": 595, + "community": 101, "norm_label": ".test_all_optimizations_present()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_all_optimizations_present" }, @@ -58763,7 +58781,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L155", - "community": 595, + "community": 101, "norm_label": ".test_query_filter_uses_optimization()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_query_filter_uses_optimization" }, @@ -58772,7 +58790,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L173", - "community": 136, + "community": 42, "norm_label": "testperformancebenchmarks", "id": "tests_test_stocks_optimization_testperformancebenchmarks" }, @@ -58781,7 +58799,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L176", - "community": 136, + "community": 42, "norm_label": ".test_tickerindex_lookup_performance()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_tickerIndex_lookup_performance" }, @@ -58790,7 +58808,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L196", - "community": 136, + "community": 42, "norm_label": ".test_prefix_scan_performance()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_prefix_scan_performance" }, @@ -58799,7 +58817,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L216", - "community": 136, + "community": 42, "norm_label": ".test_index_lookup_vs_scan_comparison()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_index_lookup_vs_scan_comparison" }, @@ -58808,7 +58826,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L246", - "community": 136, + "community": 42, "norm_label": ".test_querycache_performance()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_queryCache_performance" }, @@ -58817,7 +58835,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L268", - "community": 136, + "community": 42, "norm_label": ".test_column_projection_performance()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_column_projection_performance" }, @@ -58826,7 +58844,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L283", - "community": 136, + "community": 42, "norm_label": ".test_cache_initialization_time()", "id": "tests_test_stocks_optimization_testperformancebenchmarks_test_cache_initialization_time" }, @@ -59015,7 +59033,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L138", - "community": 595, + "community": 101, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_optimization_rationale_138" }, @@ -59024,7 +59042,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L141", - "community": 595, + "community": 101, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_optimization_rationale_141" }, @@ -59033,7 +59051,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L156", - "community": 595, + "community": 101, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_optimization_rationale_156" }, @@ -59042,7 +59060,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L174", - "community": 136, + "community": 42, "norm_label": "performance benchmark tests for stocks api", "id": "tests_test_stocks_optimization_rationale_174" }, @@ -59051,7 +59069,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L177", - "community": 136, + "community": 42, "norm_label": "ticker index lookup should be o(1) - very fast", "id": "tests_test_stocks_optimization_rationale_177" }, @@ -59060,7 +59078,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L197", - "community": 136, + "community": 42, "norm_label": "prefix scan should be much slower than index lookup", "id": "tests_test_stocks_optimization_rationale_197" }, @@ -59069,7 +59087,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L217", - "community": 136, + "community": 42, "norm_label": "index lookup should be significantly faster than scan", "id": "tests_test_stocks_optimization_rationale_217" }, @@ -59078,7 +59096,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L247", - "community": 136, + "community": 42, "norm_label": "query cache should avoid recomputation", "id": "tests_test_stocks_optimization_rationale_247" }, @@ -59087,7 +59105,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L269", - "community": 136, + "community": 42, "norm_label": "column projection should reduce memory and time", "id": "tests_test_stocks_optimization_rationale_269" }, @@ -59096,7 +59114,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L284", - "community": 136, + "community": 42, "norm_label": "cache initialization should complete in reasonable time", "id": "tests_test_stocks_optimization_rationale_284" }, @@ -59500,7 +59518,7 @@ "label": "Authentication System", "file_type": "document", "source_file": "docs/authentication.md", - "community": 43, + "community": 606, "norm_label": "authentication system", "id": "authentication" }, @@ -59508,7 +59526,7 @@ "label": "JWT Authentication", "file_type": "rationale", "source_file": "docs/authentication.md", - "community": 43, + "community": 606, "norm_label": "jwt authentication", "id": "jwt" }, @@ -59516,7 +59534,7 @@ "label": "Google OAuth", "file_type": "rationale", "source_file": "docs/authentication.md", - "community": 43, + "community": 606, "norm_label": "google oauth", "id": "google_oauth" }, @@ -59604,7 +59622,7 @@ "label": "Pytest Testing", "file_type": "rationale", "source_file": "pyproject.toml", - "community": 138, + "community": 93, "norm_label": "pytest testing", "id": "pytest" }, @@ -78390,21 +78408,21 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "TODO.md", - "source_location": "L1", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, "source": "todo_md", - "target": "server_todo_priorities_active_order_2026_09_29" + "target": "server_todo_user_structure_defined_by_string_roles" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "TODO.md", - "source_location": "L25", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, "source": "todo_md", - "target": "server_todo_user_structure_defined_by_string_roles" + "target": "server_todo_priorities_active_order_2026_09_29" }, { "relation": "contains", @@ -80806,6 +80824,16 @@ "source": "superpowers_uvicorn_worker_scaling_plan_2_change_inventory_the_spine", "target": "superpowers_uvicorn_worker_scaling_plan_b6_\u00e2_deployment_glue_must_build" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/benchmarks/stocks-cache-ttl.md", + "source_location": "L1", + "weight": 1.0, + "source": "docs_superpowers_benchmarks_stocks_cache_ttl_md", + "target": "benchmarks_stocks_cache_ttl_stocks_endpoint_cache_ttl_6h_rss_check", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -150454,5 +150482,5 @@ "label": "User Authentication & Authorization" } ], - "built_at_commit": "3e2a330c5c7ebebde0b7c6bf59c4318e6cee3067" + "built_at_commit": "ffa33ed81f579f298713797ac382047a9b22c06c" } \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index bf7c3656..3fa6acda 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -555,8 +555,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\TODO.md": { - "mtime": 1790723757.2517514, - "ast_hash": "8765b8e1907bb2d991630082eae83b5b", + "mtime": 1790726042.3421116, + "ast_hash": "0eafe0ff835b328c0ef66fdbe6e75100", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\authentication.md": { @@ -604,6 +604,11 @@ "ast_hash": "5bc55983f02c9f640b96fe2ade89e7d2", "semantic_hash": "" }, + "D:\\Repositories\\server\\docs\\superpowers\\benchmarks\\stocks-cache-ttl.md": { + "mtime": 1790725744.0210347, + "ast_hash": "02bdda14a198a7ce352314ec84cd36a6", + "semantic_hash": "" + }, "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-08-09-sse-resume.md": { "mtime": 1786286515.2616172, "ast_hash": "6dea783c1c379b193b0234febff9ed28", diff --git a/main/app/stocks_api/key.py b/main/app/stocks_api/key.py index 6c4c5d56..51f7d570 100644 --- a/main/app/stocks_api/key.py +++ b/main/app/stocks_api/key.py @@ -15,12 +15,6 @@ apiKeyHeader = APIKeyHeader(name="X-API-Key", auto_error=False) -UNAUTHORIZED_DETAIL = "Unauthorized" -QUOTA_DETAIL = "Too many requests" - -SALT_BYTES = 16 -_STORED_SEP = "$" - def hashApiKey(rawKey: str, saltHex: str) -> str: return hashlib.sha256((saltHex + rawKey).encode()).hexdigest() @@ -28,15 +22,15 @@ def hashApiKey(rawKey: str, saltHex: str) -> str: def createStoredApiKey(rawKey: str | None = None) -> tuple[str, str]: raw = rawKey or secrets.token_urlsafe(32) - saltHex = secrets.token_hex(SALT_BYTES) - return raw, f"{saltHex}{_STORED_SEP}{hashApiKey(raw, saltHex)}" + saltHex = secrets.token_hex(16) + return raw, f"{saltHex}{"$"}{hashApiKey(raw, saltHex)}" def isValidStoredKey(providedKey: str, storedKey: str | None) -> bool: try: - if not providedKey or not storedKey or _STORED_SEP not in storedKey: + if not providedKey or not storedKey or "$" not in storedKey: return False - saltHex, digest = storedKey.split(_STORED_SEP, 1) + saltHex, digest = storedKey.split("$", 1) if not saltHex or not digest: return False candidate = hashlib.sha256((saltHex + providedKey).encode()).hexdigest() @@ -50,7 +44,7 @@ async def verifyAPIKey(apiKey: str = Depends(apiKeyHeader), db: Session = Depend return None if not apiKey: - raise HTTPException(status_code=401, detail=UNAUTHORIZED_DETAIL) + raise HTTPException(status_code=401, detail="Unauthorized") try: # ponytail: full-table scan, move to server-side salted lookup if keys table grows large @@ -66,8 +60,8 @@ async def verifyAPIKey(apiKey: str = Depends(apiKeyHeader), db: Session = Depend if matchedPk is None: if exhaustedMatch: - raise HTTPException(status_code=429, detail=QUOTA_DETAIL) - raise HTTPException(status_code=401, detail=UNAUTHORIZED_DETAIL) + raise HTTPException(status_code=429, detail="Too many requests") + raise HTTPException(status_code=401, detail="Unauthorized") result = db.execute( update(StocksAPIKey) @@ -78,7 +72,7 @@ async def verifyAPIKey(apiKey: str = Depends(apiKeyHeader), db: Session = Depend db.commit() if cast(CursorResult, result).rowcount == 0: - raise HTTPException(status_code=429, detail=QUOTA_DETAIL) + raise HTTPException(status_code=429, detail="Too many requests") return apiKey From 09695605a6e651ad49c44326f87126ed4bf636a4 Mon Sep 17 00:00:00 2001 From: heitorrosa <76885858+heitorrosa@users.noreply.github.com> Date: Tue, 29 Sep 2026 21:19:23 -0300 Subject: [PATCH 8/8] mypy --- graphify-out/.graphify_labels.json | 1 - graphify-out/GRAPH_REPORT.md | 25 +++++++++------------- graphify-out/graph.json | 34 +++++++++++++++--------------- graphify-out/manifest.json | 4 ++-- main/app/stocks_api/key.py | 2 +- 5 files changed, 30 insertions(+), 36 deletions(-) diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index 70ae8d0a..6afb4898 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -612,7 +612,6 @@ "610": "Community 610", "611": "Community 611", "612": "Community 612", - "613": "Community 613", "614": "Community 614", "615": "Community 615", "616": "Community 616", diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index a4182c39..d738e43a 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - server (2026-09-29) ## Corpus Check -- 135 files · ~103,094 words +- 135 files · ~103,084 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 6630 nodes · 8878 edges · 620 communities (387 shown, 233 thin omitted) +- 6630 nodes · 8878 edges · 619 communities (386 shown, 233 thin omitted) - Extraction: 85% EXTRACTED · 15% INFERRED · 0% AMBIGUOUS · INFERRED: 1329 edges (avg confidence: 0.69) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `ffa33ed8` +- Built from commit: `e7ac7432` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -614,7 +614,6 @@ - [[_COMMUNITY_Community 610|Community 610]] - [[_COMMUNITY_Community 611|Community 611]] - [[_COMMUNITY_Community 612|Community 612]] -- [[_COMMUNITY_Community 613|Community 613]] - [[_COMMUNITY_Community 614|Community 614]] - [[_COMMUNITY_Community 615|Community 615]] - [[_COMMUNITY_Community 616|Community 616]] @@ -654,7 +653,7 @@ - **Configuration & Database Infrastructure** — config_Config, config_engine, config_stocksEngine [INFERRED] - **User Authentication & Authorization** — user_service, authentication, user_roles, permission_system [INFERRED] -## Communities (620 total, 233 thin omitted) +## Communities (619 total, 233 thin omitted) ### Community 0 - "Stocks API Endpoints" Cohesion: 0.0 @@ -2053,12 +2052,12 @@ Cohesion: 0.4 Nodes (5): Category 8: Testing Gaps (MEDIUM), Issue 8.1 — No integration tests for full request lifecycle, Issue 8.2 — No tests for scraper, stocks query, or cache, Issue 8.3 — No tests for Google OAuth callback, Issue 8.4 — No tests for session cleanup ### Community 588 - "Community 588" -Cohesion: 0.2 -Nodes (8): Covers lines 57-60: admin bypasses permission check and generates key., Covers lines 57-60: admin bypasses permission check and generates key., Covers lines 57-60: admin bypasses permission check and generates key., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers lines 42-44: session validation fails. +Cohesion: 0.33 +Nodes (5): Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers line 27: user already has the role., Covers lines 42-44: session validation fails. ### Community 589 - "Community 589" -Cohesion: 0.33 -Nodes (6): dispatchToolCall must route memory tool names via TOOL_REGISTRY., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., dispatchToolCall must route memory tool names to executeMemoryTool., TestDispatchRoutesMemoryTools +Cohesion: 0.15 +Nodes (12): dispatchToolCall must route memory tool names via TOOL_REGISTRY., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., dispatchToolCall must route memory tool names to executeMemoryTool., makeChat must include MEMORY_TOOLS alongside MCP sessions., dispatchToolCall must route memory tool names to executeMemoryTool. (+4 more) ### Community 590 - "Community 590" Cohesion: 0.29 @@ -2121,8 +2120,8 @@ Cohesion: 0.39 Nodes (8): _build_error_response(), buildErrorResponse(), generic_exception_handler(), genericExceptionHandler(), http_exception_handler(), httpExceptionHandler(), validation_exception_handler(), validationExceptionHandler() ### Community 609 - "Community 609" -Cohesion: 0.33 -Nodes (5): Covers lines 57-60: admin bypasses permission check and generates key., Covers lines 61-63: exception during key generation (admin path)., Covers lines 61-63: exception during key generation (admin path)., Covers lines 61-63: exception during key generation (admin path)., Covers lines 61-63: exception during key generation (admin path). +Cohesion: 0.2 +Nodes (8): Covers lines 57-60: admin bypasses permission check and generates key., Covers lines 57-60: admin bypasses permission check and generates key., Covers lines 57-60: admin bypasses permission check and generates key., Covers lines 57-60: admin bypasses permission check and generates key., Covers lines 61-63: exception during key generation (admin path)., Covers lines 61-63: exception during key generation (admin path)., Covers lines 61-63: exception during key generation (admin path)., Covers lines 61-63: exception during key generation (admin path). ### Community 610 - "Community 610" Cohesion: 0.33 @@ -2132,10 +2131,6 @@ Nodes (5): Covers line 24: GET /prometheus/health., Covers line 24: GET /prometh Cohesion: 0.47 Nodes (3): TestCleanup, cleanup(), Close the main thread's session at interpreter shutdown. -### Community 613 - "Community 613" -Cohesion: 0.33 -Nodes (6): makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., makeChat must include MEMORY_TOOLS alongside MCP sessions., TestMakeChatIncludesMemoryTools - ### Community 615 - "Community 615" Cohesion: 0.5 Nodes (4): code:python ("""add wallet_holdings and wallet_lots tables), code:python (import main.models.wallet), code:bash (git add migrations/versions/wallet_tables_20260904_add_walle), Task 2: Alembic migration for wallet tables diff --git a/graphify-out/graph.json b/graphify-out/graph.json index 1894da6d..7e7c7f00 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -4033,7 +4033,7 @@ "label": "hashApiKey()", "file_type": "code", "source_file": "main/app/stocks_api/key.py", - "source_location": "L25", + "source_location": "L19", "id": "stocks_api_key_hashapikey", "community": 500, "norm_label": "hashapikey()" @@ -4042,7 +4042,7 @@ "label": "createStoredApiKey()", "file_type": "code", "source_file": "main/app/stocks_api/key.py", - "source_location": "L29", + "source_location": "L23", "id": "stocks_api_key_createstoredapikey", "community": 500, "norm_label": "createstoredapikey()" @@ -4051,7 +4051,7 @@ "label": "isValidStoredKey()", "file_type": "code", "source_file": "main/app/stocks_api/key.py", - "source_location": "L35", + "source_location": "L29", "id": "stocks_api_key_isvalidstoredkey", "community": 500, "norm_label": "isvalidstoredkey()" @@ -4060,7 +4060,7 @@ "label": "verifyAPIKey()", "file_type": "code", "source_file": "main/app/stocks_api/key.py", - "source_location": "L48", + "source_location": "L42", "id": "stocks_api_key_verifyapikey", "community": 500, "norm_label": "verifyapikey()" @@ -29936,7 +29936,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1202", - "community": 588, + "community": 609, "norm_label": ".test_generate_key_admin_bypasses_permission_check()", "id": "tests_test_controllers_coverage_teststocksapigeneratekey_test_generate_key_admin_bypasses_permission_check" }, @@ -33212,7 +33212,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L79", - "community": 613, + "community": 589, "norm_label": "testmakechatincludesmemorytools", "id": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" }, @@ -33293,7 +33293,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L80", - "community": 613, + "community": 589, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_80" }, @@ -41501,7 +41501,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1196", - "community": 588, + "community": 609, "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", "id": "tests_test_controllers_coverage_rationale_1196" }, @@ -46523,7 +46523,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L52", - "community": 613, + "community": 589, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_52" }, @@ -46559,7 +46559,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L57", - "community": 613, + "community": 589, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_57" }, @@ -47324,7 +47324,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L56", - "community": 613, + "community": 589, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_56" }, @@ -47657,7 +47657,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L48", - "community": 613, + "community": 589, "norm_label": "makechat must include memory_tools alongside mcp sessions.", "id": "tests_test_memory_tools_wiring_rationale_48" }, @@ -50528,7 +50528,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1192", - "community": 588, + "community": 609, "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", "id": "tests_test_controllers_coverage_rationale_1192" }, @@ -51140,7 +51140,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1191", - "community": 588, + "community": 609, "norm_label": "covers lines 57-60: admin bypasses permission check and generates key.", "id": "tests_test_controllers_coverage_rationale_1191" }, @@ -80830,9 +80830,9 @@ "source_file": "docs/superpowers/benchmarks/stocks-cache-ttl.md", "source_location": "L1", "weight": 1.0, + "confidence_score": 1.0, "source": "docs_superpowers_benchmarks_stocks_cache_ttl_md", - "target": "benchmarks_stocks_cache_ttl_stocks_endpoint_cache_ttl_6h_rss_check", - "confidence_score": 1.0 + "target": "benchmarks_stocks_cache_ttl_stocks_endpoint_cache_ttl_6h_rss_check" }, { "relation": "contains", @@ -150482,5 +150482,5 @@ "label": "User Authentication & Authorization" } ], - "built_at_commit": "ffa33ed81f579f298713797ac382047a9b22c06c" + "built_at_commit": "e7ac74321e9dd166254cd676f1c5658310676ca5" } \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index 3fa6acda..2818a84b 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -300,8 +300,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\key.py": { - "mtime": 1790709776.4884515, - "ast_hash": "241906aeb4d9f2f1e013ffa469c3ae9c", + "mtime": 1790726217.7849143, + "ast_hash": "f7794d72a5abb5ac335b444be95ffd4e", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\query.py": { diff --git a/main/app/stocks_api/key.py b/main/app/stocks_api/key.py index 51f7d570..a939bab1 100644 --- a/main/app/stocks_api/key.py +++ b/main/app/stocks_api/key.py @@ -23,7 +23,7 @@ def hashApiKey(rawKey: str, saltHex: str) -> str: def createStoredApiKey(rawKey: str | None = None) -> tuple[str, str]: raw = rawKey or secrets.token_urlsafe(32) saltHex = secrets.token_hex(16) - return raw, f"{saltHex}{"$"}{hashApiKey(raw, saltHex)}" + return raw, f"{saltHex}{'$'}{hashApiKey(raw, saltHex)}" def isValidStoredKey(providedKey: str, storedKey: str | None) -> bool: